我试图在我的控制器中使用“PUT”,如
public class HomeController : Controller
{
[HttpPut]
public ContentResult Test()
{
return Content("hi");
}
}
但我无法访问它。我认为这是我的代码,但在尝试了提琴手并得到同样的错误后(404)。
我认为还有别的东西了。我只是使用iis express和mvc 5.
之前我从未使用过HttpPut但最近一直在做webapi所以这就是为什么我试着在mvc 5控制器中这样做但我不确定在这种情况下它是否带给我任何东西(尤其是需要额外的设置,因为它似乎是是需要的)
发布请求有效
答案 0 :(得分:2)
另一种可能性是更新ExtensionlessUrlHandler-Integrated-4.0。
<system.webServer>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
此解决方案可在以下位置找到: Attribute routing with http PUT method constraint
答案 1 :(得分:1)
这种失败有几种可能性。一个是安全性,意味着PUT标头被阻止:
您的网络服务器是否允许PUT标头?试试这个:
...
<security>
<requestFiltering>
<verbs>
<add verb="PUT" allowed="true" />
</verbs>
</requestFiltering>
</security>
</system.webServer>
另一种可能性是您的测试受CORS(跨源资源共享)约束,您可能需要在MVC中启用它。我个人没有做过这个MVC,只有WebApi。我希望这个链接可以帮助你:
http://www.c-sharpcorner.com/Blogs/11609/how-to-enable-cross-origin-resource-sharing-in-mvc.aspx