在我们的测试服务器上,当我试图转到IIS中托管的WCF服务的URL时,我会得到一个HTTP 400错误。当我查看服务器上的WCF日志时,它声明“不能读取消息的正文,因为它是空的”。如果我尝试对同一服务器上的另一个服务执行相同的操作,它可以正常工作,并获得WSDL的路径。
我也无法通过SoapUI连接到WSDL。但是,我能够从Visual连接到服务。
我见过的大多数帖子都提到需要在配置文件中使用httpGetEnabled="true"。该属性存在于测试服务器的web.config中。
其他帖子提到需要额外的属性,但我不明白如果生产服务器没有这些属性,为什么需要这些属性。
对Davin的响应:下面是Fiddler的原始视图,用于生产请求GET http://production.svc HTTP/1.1 Accept: text/html,application/xhtml+xml,/ Accept-Language: en-US用户-代理: Mozilla/5.0 (兼容;MSIE9.0;Windows 6.1;WOW64;三叉戟/5.0)接受-编码: gzip,缩小连接:保持-活动主机:生产主机
这是Fiddler的原始视图,用于测试请求GET http://test.svc HTTP/1.1 Accept: text/html,application/xhtml+xml,/ Accept-Language: en-US用户-代理: Mozilla/5.0 (兼容;MSIE 9.0;Windows 6.1;WOW64;三叉戟/5.0)接受-编码: gzip,平减连接:保持-活动主机:测试
这是试图使用IE9连接到服务。
To CodeCaster:它使用的是框架4,运行在asp.net v4.0应用程序池中。框架4安装在服务器上。如果我使用我设置的测试应用程序,我就能够连接到服务并向其中一个方法发送请求,它可以正常工作。
我的问题是连接到IE或soapUI的服务,因为我们的供应商不会在他们的测试系统上更新他们的端点,直到他们能够这样做。
发布于 2013-03-12 15:05:11
HTTP 400是一个BadRequest。当服务器拒绝请求时抛出它,因为它无法处理请求。在此上下文中,您收到的错误消息是有意义的。这也意味着服务器能够找到您的端点。因此,问题可能不在于httpGetEnabled。
您需要做的是查看发送到服务器的HTTP消息。为此,我建议将客户端指向代理( fiddler ),然后配置fiddler将请求转发到服务器。然后,您需要确保请求的格式是您所期望的。
https://stackoverflow.com/questions/15364654
复制相似问题