Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 405方法不允许放置_Asp.net_Asp.net Web Api - Fatal编程技术网

Asp.net 405方法不允许放置

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

我已经检查了所有配置,没有一个工作正常

GET,POST正在使用put,但我收到了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>

即使我使用的是基本身份验证/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有关。您使用的是什么版本?