我检查了所有内容,但没有一个配置工作正常。
THE GET,POST正在工作但是我得到了405消息。 我没有WebDEV。
这是我的配置。
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="WebDAV"/>
<remove name="ExtensionlessUrlHandler-Integrated-4.0"/>
<remove name="OPTIONSVerbHandler"/>
<remove name="TRACEVerbHandler"/>
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*"
type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
这让我疯了!
我已提及所有可用的建议,例如: Asp.NET Web API - 405 - HTTP verb used to access this page is not allowed - how to set handler mappings
即使我使用的是Basic Auth / Windows Auth。禁用它也没什么区别。
[System.Web.HttpHttpPut] public override HttpResponseMessage Put(int id,Request entity) { .... }
注意:我刚刚安装了登台服务器,它已经运行了。但是,它不能在我的机器上工作......
答案 0 :(得分:5)
您是否使用正确的命名空间用HttpPut修饰了您的操作? 应该看起来像这样:
[HttpPut]
public ActionResult ActionName()
{
//Your code
}
编辑:显然iis express已删除&amp;默认情况下禁用。 如果这只发生在iis express中,您可能会发现this answer有用。 基本上你必须编辑这个文件:
%userprofile%\documents\iisexpress\config\applicationhost.config
在这一行:
<add name="ExtensionlessUrl-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
添加动词PUT
编辑nr 2:
关注This anwser:打开您的iis经理并选择您的网站
单击右侧的处理程序映射链接
找到ExtensionlessUrlHandler-Integrated-4.0条目并双击它。
在Request Restrictions选项卡谓词中,您可以添加put以启用put support。
答案 1 :(得分:0)
您的浏览器设置为默认方法GET。您可以使用Postman Chrome扩展程序来测试所有HTTP方法。