c# - System.Web.Http.HttpPut 与 System.Web.Mvc.HttpPut 之间有什么区别

标签 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”。

最佳答案

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

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

确保在正确的 Controller 类型上使用正确的命名空间。如果文件中同时使用了两个命名空间,则通过调用 [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(); }

关于c# - System.Web.Http.HttpPut 与 System.Web.Mvc.HttpPut 之间有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44178056/

相关文章:

c# - 从 Json Serialize 动态忽略 c# 字段

c# - 使用 Excel Interop 并获取打印对话框

c# - MVC/n注入(inject) : Implementing My Own ApplicationUserManager

c# - 错误 "Class does not contain a definition for method"但方法存在

c# - 如何使用 Winappdriver 访问 GridView 单元格?

c# - 如何读取JSON数据?

ASP.NET MVC 包罗万象的路由

asp.net - Asp.NET 中的多对多 ajax 请求

c# - DelegatingHandler 设置 CurrentPrincipal

c# - 在内存中缓存应用程序数据 : MVC Web API