IIS 7.5,Web服务和HTTP 405错误

我有一个Web服务,我在我的机器上托管。 我使用的是Windows 7和IIS 7.5。

问题 :当客户端尝试使用Web服务时,他/她会收到HTTP 405错误。

在IIS的日志文件中,我可以看到这被拒绝,因为不允许POST动词。

问题 :如何为这些请求允许POST动词?
我是否必须添加WSDL文件的映射? 如果我这样做,我该如何配置此映射? 我已经检查过,在现有的映射中,我对WSDL扩展没有任何帮助。

是否可能在IIS上设置另一个允许这些请求的东西?

Web服务是使用WCF构建的。

经过几个小时的挣扎,这是帮助我的最终解决方案(从提琴手测试):

  1. 在IIS 7.5上 – > YourWebsite – > Handler Mappings
  2. 选择面板右侧的“添加模块映射”选项
  3. 在“请求路径”字段中输入* .wsdl
  4. 在“模块”字段中输入“ProtocolSupportModule”
  5. 单击“请求限制”并转到“动词”选项卡
  6. 输入POST动词
  7. 保存更改

结束瞧,小提琴手不再回答405而是高兴200。

列出的答案对我不起作用,但我能够通过运行来解决问题

“%WINDIR%\ Microsoft.Net \ Framework \ v3.0 \ Windows Communication Foundation \ ServiceModelReg.exe”-r

这重新注册了* .svc的处理程序映射

转到IIS管理器 – >选择网站 – >处理程序映射 – >选择处理程序 – >右键单击并选择编辑 – >请求限制 – >动词选项卡

在那里改变价值。

根据您的扩​​展名,它可能是一个不同的处理程序。

对于碰到这个页面但是正在向使用aspx页面而不是服务的Web应用程序发出请求的人来说,有一件重要的事情需要注意。

如果你向http://localhost/MyApplication发出fiddler http post请求,它将抛出状态405.但是如果指定http://localhost/MyApplication/Default.aspx ,它将正确响应(状态为200)

希望这可以帮助。 我一直在寻找错误的地方一小时,调试处理程序,模块,webdav设置,http动词等。

结果我没有启用WCF HTTP激活。 解决方案: IIS8上的WCF; * .svc处理程序映射不起作用

啊 – 我终于在IIS上找到了我的CORS解决方案。 这是我在寻找解决方案时出现的问题之一。

正确的答案是aliostad – 问题来自这样一个事实:对于实现’OPTIONS’动词的一些解决方案,建议删除该动词到ProtocolSupportModule的映射。 或者也许有人只是清除了不必要的映射等。这没有为OPTIONS留下任何处理程序。

我不是关于幕后发生的事情的专家,但似乎IIS确保在Application_BeginRequest事件被触发之前很久就有一个潜在的请求处理程序,尽管它们的序列图如下:

https://msdn.microsoft.com/en-us/library/bb470252.aspx

因此,在不执行模块的情况下返回405状态。 例如,发送到服务器的内容是:

 OPTIONS http://www.example.com/path/mypage.aspx 

所以IIS正在寻找接受OPTIONS动词的* .aspx处理程序。 如果查看默认的applicationHost.config文件,您会看到,例如:

      

我刚刚在web.config中完成了以下操作,使IIS停止返回状态200 noops:

   

所以,首先尝试它,并得出结论,这是我需要的,我在web.config中添加了以下内容:

          

请注意,替换项与applicationHost.config中的替换项匹配,除非为每行添加了额外的OPTIONS谓词。

对于那些使用路由的人(例如MVC或webapi):

        

最后,我不是IIS专家 – 也许有一种不同的更有效的方法来处理CORS的OPTIONS动词(更具体地说,允许你的CORS处理程序在没有’自定义标题’部分解决方案的情况下工作,我对那些人开放解决方案。