System.Web.Http.HttpPut与System.Web.Mvc.HttpPut有什么不同

Sur*_*giT 6 c# asp.net asp.net-web-api asp.net-web-api-routing

System.Web.Http.HttpPutSystem.Web.Mvc.HttpPut有什么不同?

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

Nko*_*osi 5

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

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

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

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

[System.Web.Mvc.HttpPut]为MVC行动

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