创建了一个新的ASP.NET MVC项目,更新的NuGet包(至<package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net451" />
并加入一控制器:
public class HomeController : Controller
{
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Put | HttpVerbs.Post)]
public string Index()
{
return "bombaclat";
}
}
我跑了它在IIS Express和发现从IIS StaticFile处理程序,PUT返回404(GET和POST工作得很好)。
我可以通过允许所有动词或者修复它ExtensionlessUrlHandler
:
<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>
或通过运行UrlRoutingModule
为每个请求:
<system.webServer>
<modules>
<remove name="UrlRoutingModule-4.0" />
<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
</modules>
</system.webServer>
(因此,RAMMFAR设置为true,也能发挥作用)
- 它是由设计,我需要惹的Web.config使PUT的工作?
- 是等价的解决方案? 如果没有,有什么区别,我应该如何决定使用哪一个?
- 是否有一个原因PUT适合残疾人
ExtensionlessUrlHandler
默认?
(以防万一:我在Windows 8.1中的企业,VS 2013,IIS 8)。
UPD:如果你打勾WebApi
创建项目时,VS将增加ExtensionlessUrlHandler
配置的一部分。 所以,我想它的安全使用