Asp.net 405方法不允许放置
我已经检查了所有配置,没有一个工作正常 GET,POST正在使用put,但我收到了405条消息。 我没有WebDEV 这是我的配置Asp.net 405方法不允许放置,asp.net,asp.net-web-api,Asp.net,Asp.net Web Api,我已经检查了所有配置,没有一个工作正常 GET,POST正在使用put,但我收到了405条消息。 我没有WebDEV 这是我的配置 <system.webServer> <validation validateIntegratedModeConfiguration="false"/> <modules runAllManagedModulesForAllRequests="true"> <remove name="WebDAV
<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>
即使我使用的是基本身份验证/Windows身份验证。禁用此功能也没有什么区别
[System.Web.httpput]
公共覆盖HttpResponseMessage Put(int id,请求实体)
{
....
}
注意:我刚刚安装了临时服务器,它已经工作了。但是,它在我的机器上不工作。。。
您是否使用正确名称空间中的HttpPut来装饰您的操作?
应该是这样的:
[HttpPut]
public ActionResult ActionName()
{
//Your code
}
编辑:显然iis express在默认情况下禁用了删除和放置。
如果这只发生在iis express中,您可能会发现它是有用的。
基本上,您必须编辑此文件:
%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" />
:打开iis管理器并选择您的网站。
单击右侧的处理程序映射链接。
找到ExtensionlessUrlHandler-Integrated-4.0条目并双击它。
在“请求限制”选项卡中,您可以添加put以启用put支持。您的浏览器设置为默认方法GET。您可以使用Chrome扩展来测试所有HTTP方法。谢谢您的回复。是的,它链接到System.Web.Http。您能同时显示控制器代码吗?可能您的参数不匹配,或者您的目标控制器/操作不正确。@kristoff刚刚这么做了。如果您尝试了所有操作,那么没有,不是真的:)但是如果您让一些无限操作处于打开状态:您能告诉我您使用的是IIS express还是普通IIS吗?您可以尝试使用相同的设置(例如IIS7)模拟登台服务器,看看这是否有效,以确保问题是否与iis express有关。您使用的是什么版本?