(405) Method Not Allowed. WCF WebService

20

介绍:

你好,我正在尝试在本地IIS 7.5服务器上设置WCF Web服务,但是在完成基本配置后,我无法使用WinForms测试客户端发送数据,并返回标题中提到的错误。 我已经搜索了类似的问题线程,但是没有找到适合我的问题的内容。

数据:

- Wcf WebService和测试客户端均由第三方提供

-它们已经在另一个服务器上工作,并且我正在使用相同的版本

-当我启用或配置IIS时,我可能做错了什么

请求:

- 我需要知道为了正确安装它以便我可以使用Wcf Web服务需要启用禁用哪些IIS功能(如果是这种情况)。

- 如何正确配置服务器以解决上述错误。

我的配置:

- 安装IIS后,我将DefaulAppPool更改为.NET Framework v4.0.30.319;管道模式:集成。-高级设置:Load User profile = False。

- 使用DefaultAppPool.Binding创建名为“WcfMicrocontrollerService”的新网站;类型:http,IP地址:,端口:80

此时,我可以通过Web浏览器访问它,但是当我使用测试客户端向服务 POST 数据时,我会收到以下错误:"远程服务器返回意外的响应:(405)不允许的方法。"

以下是由Fiddler记录的发送的数据包:

POST http://192.168.0.102/MicroControllerComSvc.svc HTTP/1.1
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://tempuri.org/IMicroControllerComSvc/GetMicrocontrollerData"
Host: 192.168.0.102
Content-Length: 237
Expect: 100-continue
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><GetMicrocontrollerData xmlns="http://tempuri.org/"><microControllerData>1,1,1,1,2,2,1,0,100,300</microControllerData></GetMicrocontrollerData></s:Body></s:Envelope>

收到:

HTTP/1.1 405 Method Not Allowed
Cache-Control: private
Allow: GET, HEAD, OPTIONS, TRACE
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Date: Tue, 01 Mar 2016 10:44:44 GMT
Content-Length: 5671

这里是正文:https://dl.dropboxusercontent.com/u/2237590/405.html

这似乎表明我应该查看处理程序映射,但我不知道在那里编辑什么。

1个回答

57

好的,经过简短的搜索,我找到了以下问题:IIS 8上的WCF; *.svc处理程序映射不起作用

忽略该问题是关于IIS 8的事实,您是在使用Windows还是Windows Server?

如果您正在使用Windows,请按以下步骤操作...

  • 控制面板->程序->程序和功能>打开或关闭Windows功能。在".Net Framework 3.5(包括.NET 2.0和3.0)"部分
  • 确保"Windows通信基础架构HTTP激活"已打开。
  • 还要检查".NET Framework 4.x高级服务"下的"WCF服务",确保HTTP激活也在那里打开。

这是该问题中显示的.net 4.5更改的图片。 需要启用的功能

如果您正在使用Windows Server,请尝试遵循该问题的第一个答案,以了解如何使用服务器管理器设置角色。


我已经成功将Web服务运行在另一台安装了Windows 10(IIS 10)的机器上,并且您的指示是适用的。然而,在Windows 7 SP1下,我只有.NET Framework 3.5选项,并且在启用HTTP激活后出现500.21错误,但我不再卡住了,应该能够自己解决问题。我一直在错误的地方寻找,永远也想不到这个。非常感谢! - Grossu Iulian
我很高兴这有所帮助。 - simlawstu
那真的很有帮助 - 在 Server 2016 预览版 5 下运行良好 - 我认为它默认安装了几乎所有功能。在干净安装 Server 2016 标准版后,这一部分让我抓狂,我们都知道在按计划工作时这是多么紧张的事情 :-) - gchq
1
安装HTTP激活程序解决了我在将WCF移动到未安装HTTP激活程序的新Web服务器后遇到的405错误。谢谢! - IanK.CO
谢谢您,先生!在Server 2016上添加HTTP激活也是我的解决方法。 - Christopher
这对我没有用。我仍然收到500错误“由于编译期间的异常而无法激活”,请看这里 https://dev59.com/qcv6oIgBc1ULPQZFtad1?noredirect=1#comment131309931_74380463 - Tom McDonald

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接