【发布时间】:2016-12-06 12:21:41
【问题描述】:
我正在尝试为同一条路线设置GET 和POST:
我已经注册了以下内容:
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "MyGetMethod",
routeTemplate: "api/v1/users/{user}",
defaults: new
{
controller = "Users",
action = "MyGetMethod"
},
constraints: null,
handler: HttpClientFactory.CreatePipeline(
new HttpControllerDispatcher(config),
routeHandlerFactory.Create()));
config.Routes.MapHttpRoute(
name: "MySetMethod",
routeTemplate: "api/v1/users/{user}",
defaults: new
{
controller = "Users",
action = "MySetMethod"
},
constraints: null,
handler: HttpClientFactory.CreatePipeline(
new HttpControllerDispatcher(config),
routeHandlerFactory.Create()));
我的UsersController.cs 包含:
[HttpPost]
public HttpResponseMessage MySetMethod(string user)
{
return new HttpResponseMessage(HttpStatusCode.NotImplemented);
}
[HttpGet]
public HttpResponseMessage MyGetMethod(string user)
{
return new HttpResponseMessage(HttpStatusCode.NotImplemented);
}
这不起作用。
GET 工作正常,但是当我使用 POST 时,WebAPI 仍然重定向到 GET 方法,我收到错误:
"Message": "请求的资源不支持http方式 '发布'。”
如果我注释掉GET 方法的注册,那么POST 工作正常。
是因为我在控制器方法上使用了属性[HttpPost]、[HttpGet] 之间的组合,而不是将它们标记为constraints?
如何让GET 和POST 在同一条路线上?
【问题讨论】:
-
用一种方法检查
if (HttpContext.Current.Request.HttpMethod == "POST")怎么样?
标签: c# .net asp.net-web-api