【发布时间】:2013-03-12 14:57:22
【问题描述】:
在我们的测试服务器上,当我尝试访问托管在 IIS 中的 WCF 服务的 URL 时,我收到 HTTP 400 错误。当我查看服务器上的 WCF 日志时,它指出“无法读取消息正文,因为它是空的”。如果我尝试为同一服务器上的另一个服务做同样的事情,它工作正常,我得到了 WSDL 的路径。
我也无法通过 SoapUI 连接到 WSDL。但是,我可以从 Visual Studio 连接到该服务。
我看到的大多数帖子都提到在配置文件中需要httpGetEnabled="true"。该属性存在于测试服务器的 web.config 中。
其他帖子提到需要额外的属性,但我不明白如果生产服务器在没有它们的情况下工作,为什么需要它们。
编辑回应戴文: 这是 Fiddler 对生产请求的原始视图 获取http://production.svcHTTP/1.1 接受:文本/html、应用程序/xhtml+xml、/ 接受语言:en-US 用户代理:Mozilla/5.0(兼容;MSIE 9.0;Windows NT 6.1;WOW64;Trident/5.0) 接受编码:gzip,放气 连接:保持活动 宿主:生产
这是来自 Fiddler 的测试请求的原始视图 获取http://test.svcHTTP/1.1 接受:文本/html、应用程序/xhtml+xml、/ 接受语言:en-US 用户代理:Mozilla/5.0(兼容;MSIE 9.0;Windows NT 6.1;WOW64;Trident/5.0) 接受编码:gzip,放气 连接:保持活动 主持人:测试
这是尝试使用 IE9 连接到服务。
致 CodeCaster: 它使用框架 4 并在 asp.net v4.0 应用程序池中运行。框架 4 安装在服务器上。如果我使用我设置的测试应用程序,我可以连接到服务并向其中一种方法发送请求,并且它工作正常。
我的问题是使用 IE 或soapUI 连接到服务,因为我们的供应商在他们能够更新之前不会在他们的测试系统上更新他们的端点。
【问题讨论】:
-
什么是“WCF 日志”?您是否启用了跟踪?服务在哪个应用程序和池中运行?什么 .NET 版本?服务的配置是什么(尤其是绑定)?服务器上是否安装了 .NET 3.5 WCF 模块? Is .NET registered with IIS?。请展示一些研究成果。 :-)
标签: .net web-services iis-7