禁用ASP.NET WebAPI应用程序中的HTTP谓词限制

本文关键字:HTTP 谓词 ASP NET WebAPI 应用程序 禁用 | 更新日期: 2023-09-27 18:00:00

我正试图将一些RPC风格的方法添加到我的WebAPI应用程序中,如本文所述:

ASP.NET Web API中的REST与RPC?谁在乎;两者兼而有之。

但在当前版本的WebAPI中,他们似乎添加了一些限制,现在我不得不将这些[HttpGet]&每一个名称与某个HTTP谓词不匹配的方法的联合属性。如果我不这样做,那么我得到405"方法不允许"。

有没有什么简单的解决方案可以禁用这种行为,这样我就可以使用不带HTTP谓词属性的任意名称的控制器方法?

禁用ASP.NET WebAPI应用程序中的HTTP谓词限制

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

[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)
);