Web服务IIS7 .net框架4 HTTP 400

问题描述:

在我们的测试服务器上,当我尝试访问IIS中托管的WCF服务的URL时,出现HTTP 400错误。当我查看服务器上的WCF日志时,它指出“消息正文不能被读取,因为它是空的”。如果我尝试在同一台服务器上为另一个服务做同样的事情,那么它可以正常工作,并获得WSDL的路径。Web服务IIS7 .net框架4 HTTP 400

我无法通过SoapUI连接到WSDL。但是,我可以连接到Visual Studio的服务。

我见过的大多数帖子在配置文件中提到需要httpGetEnabled="true"。该属性存在于测试服务器的web.config中。

其他职位提到需要额外的属性,但我不明白为什么他们将需要如果生产服务器没有他们的工作。

EDIT响应于达文: 这里是从提琴手原始视图用于生产请求 GET http://production.svc HTTP/1.1 接受:text/html的,应用/ XHTML + xml的,/ 接受语言:EN -US 的User-Agent:Mozilla的/ 5.0(兼容; MSIE 9.0; Windows NT的6.1; WOW64;三叉戟/ 5.0) 接受编码:gzip,紧缩 连接:保持活动 主持人:生产

这是提琴手对测试要求的原始观点 GET http://test.svc HTTP/1.1 Accept:text/html,application/xhtml + xml,/ Accept-Language:en-US User-Agent:Mozilla/5.0(compatible; MSIE 9.0; Windows NT 6.1; WOW64;三叉戟/ 5.0) 接受编码:gzip,紧缩 连接:保持活动 主持人:测试

这是试图用IE9连接到服务。

To CodeCaster: 它使用框架4并在asp.net v4.0应用程序池中运行。 Framework 4安装在服务器上。如果我使用我设置的测试应用程序,则可以连接到该服务并向其中一个方法发送请求,并且工作正常。

我的问题是连接到IE或soapUI的服务,因为我们的供应商不会在他们的测试系统上更新他们的端点,直到他们能够这样做。

+0

什么是“WCF日志”?你有没有启用跟踪?在应用程序和池中运行的服务是什么?什么.NET版本?服务的配置(特别是绑定)是什么? .NET 3.5 WCF模块是否安装在服务器上? [.NET是否已在IIS中注册?](http://*.com/a/3935871/266143)。请展示一些研究工作。:-) – CodeCaster 2013-03-12 15:03:40

HTTP 400是BadRequest。当服务器拒绝请求时会引发此问题,因为它无法处理请求。在这种情况下,您收到的错误消息很有意义。这也意味着服务器能够找到您的端点。所以,这个问题可能不是httpGetEnabled

你需要做的是看到去往服务器的HTTP消息。为此,我建议您将客户端指向代理(fiddler),然后配置fiddler以将请求转发到服务器。然后你需要确保请求的格式符合你的期望。

+0

“不良请求”响应不仅仅是格式错误的消息。 – CodeCaster 2013-03-13 00:39:21