System.Web.Http.HttpPut 和 System.Web.Mvc.HttpPut 有什么区别

What is the different between System.Web.Http.HttpPut Vs System.Web.Mvc.HttpPut

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

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

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

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

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

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

来具体说明
[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(); }