【发布时间】:2015-10-06 02:23:18
【问题描述】:
有没有办法根据请求中指定的HTTP方法进行路由?我希望在同一个 URI 上有一个 GET 和 PUT,但我似乎找不到在两者之间设置路由的选项。 [HttpGet] 和 [HttpPut] 属性仅充当过滤器,因此 PUT 请求会触发第一个操作,并且由于它首先触发 GET 处理程序而出现 405 错误。
我想做什么
~/User/PP GET -> UserController.GetPrivacyPolicy
~/User/PP PUT -> UserController.UpdateUserPrivacyPolicy
目前正在发生的事情
~/User/PP GET -> UserController.GetPrivacyPolicy
~/User/PP PUT -> UserController.GetPrivacyPolicy
(这个错误是因为我在 GetPrivacyPolicy 方法上有一个 [HttpGet] 过滤器)
更新: 只是为了补充下面发布的内容,看起来我误解了 [HttpGet] 和 [HttpPut] 属性的工作原理,它们是路由过程的一部分。我能够通过以下方式达到我想要的结果
[HttpGet]
[Route("~/User/PP")]
public string GetPrivacyPolicy()
{
return "Get PP";
}
[HttpPut]
[Route("~/User/PP")]
public void UpdatePrivacyPolicy()
{
return "Put PP";
}
【问题讨论】:
标签: asp.net-web-api2