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

时间:2014-04-24 15:56:18

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

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

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

但是在当前版本的WebAPI中,它们似乎增加了一些限制,现在我被迫将这些[HttpGet]和& Co属性放在每个没有名称匹配某些HTTP的方法上动词。如果我不这样做那么我得到405"方法不被允许"。

是否有任何简单的解决方案可以禁用此行为,因此我可以使用任意名称的控制器方法而不使用HTTP谓词属性?

1 个答案:

答案 0 :(得分: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)
);