【问题标题】:What is the different between System.Web.Http.HttpPut Vs System.Web.Mvc.HttpPutSystem.Web.Http.HttpPut 与 System.Web.Mvc.HttpPut 有什么区别
【发布时间】:2017-10-25 23:01:33
【问题描述】:

System.Web.Http.HttpPutSystem.Web.Mvc.HttpPut有什么区别?

在 Web API 项目上使用 [HttpPut] 会导致错误 405 - 请求的资源不支持 http 方法“PUT”。

【问题讨论】:

  • 您的控制器是从Controller 还是从ApiController 继承的?
  • 来自 ApiController

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


【解决方案1】:

如果您在 MVC 系统应用程序中,您应该使用 System.Mvc.HttpPut 这是正确的方法,因为 mvc 模式有很多需要 mvc 控件/方法的东西。

【讨论】:

    【解决方案2】:

    它们属于两个不同的框架。每个的管道流都在寻找属于它们各自命名空间的特定属性。

    各个框架的路由引擎不知道另一个,因此如果在 MVC 操作上使用 Web API 属性,就好像根本没有属性一样,因此会遇到 405 错误。

    确保在正确的控制器类型上使用正确的命名空间。如果文件中同时使用了两个命名空间,则通过调用 [System.Web.Http.HttpPut] 来指定 Web API 操作

    [System.Web.Http.HttpPut]
    public IHttpActionResult Put([FromBody]MyModel model) { return Ok(); }
    

    [System.Web.Mvc.HttpPut] 用于 MVC 操作

    [System.Web.Mvc.HttpPut]
    public ActionResult Put([FromBody]MyModel model) { return View(); }
    

    【讨论】:

    • 感谢您的回复。但是,当我使用 [HttpGet] System.Web.Http.HttpGet 或 System.Web.Mvc.HttpGet 时,我没有遇到任何错误,仅在 [HttpPut] 中。
    • 检查您的网络配置以查看是否允许请求使用 PUT 动词。
    猜你喜欢
    • 1970-01-01
    • 2011-02-19
    • 2013-03-14
    • 2018-09-14
    • 2014-01-03
    • 2021-12-22
    • 2011-06-09
    • 2021-05-11
    • 2014-06-23
    相关资源
    最近更新 更多