【问题标题】:Disable HTTP verb restrictions in ASP.NET WebAPI applications在 ASP.NET WebAPI 应用程序中禁用 HTTP 动词限制
【发布时间】:2014-06-10 00:51:32
【问题描述】:

我正在尝试向我的 WebAPI 应用程序添加一些 RPC 样式的方法,如本文所述:

REST vs. RPC in ASP.NET Web API? Who cares; it does both.

但似乎在当前版本的 WebAPI 中他们添加了一些限制,现在我不得不将这些 [HttpGet]&Co 属性放在每个名称与某些 HTTP 动词不匹配的方法上。如果我不这样做,那么我会得到 405“Method not allowed”。

是否有任何简单的解决方案来禁用此行为,这样我就可以使用任意名称的控制器方法而无需 HTTP 动词属性?

【问题讨论】:

    标签: c# asp.net asp.net-web-api


    【解决方案1】:

    名称不必与动词匹配,但我认为一些动词信息会有所帮助。 这对我有用:

    [HttpGet]
    public string ApiVersion()
    
    
    [HttpPost]
    public string SomethingElse(SomeObj myobj)
    

    WebApiConfig 路由是:

    //http://encosia.com/rest-vs-rpc-in-asp-net-web-api-who-cares-it-does-both/
    config.Routes.MapHttpRoute(
        name: "DefaultApiRpc",
        routeTemplate: "api/v{version}/rpc/{controller}/{action}/{id}",
        defaults: new { id = RouteParameter.Optional } // for non-restful rpc calls ('cos they are still handy)
    );
    

    【讨论】:

    • 好吧,如果可能的话,这些动词正是我想摆脱的。至少,在我上面提到的文章中,他们展示了一个没有任何动词的方法FooBar() 的示例。但是这篇文章已经有两年了,也许 Web API 发生了一些变化,因为现在如果我不在FooBar()上添加任何动词,我会得到 HTTP 405@
    猜你喜欢
    • 2013-10-06
    • 2017-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    • 2015-04-27
    • 2016-10-14
    相关资源
    最近更新 更多