2014-07-24 275 views
2

我检查了一切,没有配置工作正常。405方法不允许PUT

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

即使我使用基本身份验证/ Windows验证。禁用这也没有区别。

[System.Web.HttpHttpPut] 公众覆盖HttpResponseMessage把(INT ID,请求实体) { .... }

注:我刚才已经把临时服务器上,它有工作。但是,它不工作我的机器上... enter image description here

enter image description here

回答

4

你是从正确的命名空间装饰与HttpPut你的行动? 应该是这个样子:

编辑:显然IIS表达具有删除&放默认为禁用。 如果这只发生在iis express上,您可能会发现this answer有用。 Basicly你必须编辑这个文件:

%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条目并双击它。
在请求限制选项卡动词中,您可以添加放置以启用放置支持。

+0

感谢您回复。是的,它链接到System.Web.Http。 – codebased

+0

你能否显示你的控制器代码?也许你有一个参数不匹配,或者你的目标是错误的控制器/操作。 – Kristof

+0

@kristoff现在就做了。 – codebased

0

您的浏览器设置为默认方法GET。您可以使用Postman Chrome扩展程序来测试所有的HTTP方法。