405方法不允许PUT

时间:2014-07-24 05:58:17

标签: asp.net asp.net-web-api

我检查了所有内容,但没有一个配置工作正常。

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

enter image description here

即使我使用的是Basic Auth / Windows Auth。禁用它也没什么区别。

[System.Web.HttpHttpPut]         public override HttpResponseMessage Put(int id,Request entity) {  .... }

  

注意:我刚刚安装了登台服务器,它已经运行了。但是,它不能在我的机器上工作......   enter image description here

enter image description here

2 个答案:

答案 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方法。