System.Web.Http.HttpPut 和 System.Web.Mvc.HttpPut 之间有什么不同?
在Web API项目上使用[HttpPut]会导致错误405 - 请求的资源不支持http方法' PUT'。
答案 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控件/方法的东西。