首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么System.Web.Mvc.HttpVerbs类缺少跟踪、连接和选项?

为什么System.Web.Mvc.HttpVerbs类缺少跟踪、连接和选项?
EN

Stack Overflow用户
提问于 2012-02-17 08:01:22
回答 1查看 1K关注 0票数 0

RFC 2616 HTTP/1.1 definition声明存在以下常见的HTTP方法:

GET、HEAD、POST、PUT、DELETE、TRACE、OPTIONS、CONNECT

但是System.Web.Mvc.HttpVerbs枚举缺少跟踪、选项和连接。

我有一个动作过滤器,它从请求中提取HttpVerb,以便做出某些决定(例如,如果一个请求放入一个基本类型A的模型,那么我设置了一些数据),所以这个实用程序代码为后三个请求抛出一个ArgumentOutOfRangeException (主要是选项-看起来像是来自Google Translate):

代码语言:javascript
运行
复制
public static HttpVerbs GetHttpVerb(this HttpRequestBase httpRequestBase)
{
    switch (httpRequestBase.HttpMethod)
    {
        case "GET":
            return HttpVerbs.Get;
        case "POST":
            return HttpVerbs.Post;
        case "PUT":
            return HttpVerbs.Put;
        case "DELETE":
            return HttpVerbs.Delete;
        case "HEAD":
            return HttpVerbs.Head;    
        default:
            throw new ArgumentOutOfRangeException("httpRequestBase");
    }
}

不确定如何解决这个问题--有什么想法吗?

我唯一能想到的就是更改所有引用代码,首先检查原始HTTP方法,然后只在它不是TRACE、OPTIONS或CONNECT时才调用该实用程序。这有点老生常谈。

为什么枚举类中缺少它?有什么特别的原因吗?MVC难道就不能处理这些类型的请求吗?

根据OPTIONS方法的说法,它甚至不应该到达MVC,而应该由IIS自己处理?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-20 13:37:23

最终创建了我自己的枚举并使用它。

代码语言:javascript
运行
复制
public enum HttpVerb
{
    Get,
    Head,
    Post,
    Put,
    Delete,
    Trace,
    Options,
    Connect
}

MVC似乎仍然处理OPTIONS类型的请求。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9321021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档