在Asp.net Mvc 5中的HttpPut?

时间:2014-04-22 21:36:38

标签: c# asp.net-mvc

我试图在我的控制器中使用“PUT”,如

public class HomeController : Controller
    {
        [HttpPut]
        public ContentResult Test()
        {
            return Content("hi");
        }
    }

但我无法访问它。我认为这是我的代码,但在尝试了提琴手并得到同样的错误后(404)。

我认为还有别的东西了。我只是使用iis express和mvc 5.

之前我从未使用过HttpPut但最近一直在做webapi所以这就是为什么我试着在mvc 5控制器中这样做但我不确定在这种情况下它是否带给我任何东西(尤其是需要额外的设置,因为它似乎是是需要的)

enter image description here

发布请求有效

enter image description here

2 个答案:

答案 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