ASP.Net Web API 基于 HTTP 方法的路由

ASP.Net Web API Route based on HTTP Method

有什么方法可以根据请求中指定的HTTP方法进行路由吗?我希望在同一个 URI 上有一个 GET 和 PUT,但我似乎找不到在两者之间设置路由的选项。 [HttpGet] 和 [HttpPut] 属性仅充当过滤器,因此 PUT 请求命中第一个操作并返回 405 错误,因为它首先命中 GEt 处理程序。

我想做什么
~/User/PP 获取 -> UserController.GetPrivacyPolicy
~/User/PP 放 -> UserController.UpdateUserPrivacyPolicy

当前情况
~/User/PP 获取 -> UserController.GetPrivacyPolicy
~/User/PP 放 -> 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";
    }

您需要做的是创建具有相同名称操作但装饰有不同 Http 方法属性的控制器

public class UserController : Controller {

    [HttpGet]
    public ActionResult PrivacyPolicy(int id) {
        // Put your code for GetPrivacyPolicy here
    }

    [HttpPut]
    public ActionResult PrivacyPolicy(int id, YourViewModel model) {
        // Put your code for UpdatePrivacyPolicy here
    }

}

当然还有其他方法的适当操作,例如HttpPost, HttpDelete, HttpPatch.