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

时间:2017-05-25 10:21:01

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

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

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

2 个答案:

答案 0 :(得分:5)

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

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

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

来具体说明
[System.Web.Http.HttpPut]
public IHttpActionResult Put([FromBody]MyModel model) { return Ok(); }
用于MVC操作的

[System.Web.Mvc.HttpPut]

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

答案 1 :(得分:0)

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