在我们的测试服务器上,当我尝试转到IIS中托管的WCF服务的URL时,出现HTTP 400错误。当我查看服务器上的WCF日志时,它指出“因为它是空的,所以无法读取消息正文”。如果我尝试在同一台服务器上为另一个服务做同样的事情,它工作正常,我得到了WSDL的路径。
我也无法通过SoapUI连接到WSDL。但是,我能够从Visual Studio连接到该服务。
我见过的大多数帖子都提到配置文件中需要httpGetEnabled="true"
。该属性存在于测试服务器的web.config中。
其他帖子提到需要其他属性但我不明白为什么如果生产服务器在没有它们的情况下工作则需要它们。
编辑回应达文: 以下是Fiddler对生产请求的原始视图 获取http://production.svc HTTP / 1.1 接受:text / html,application / xhtml + xml, / 接受语言:en-US 用户代理:Mozilla / 5.0(兼容; MSIE 9.0; Windows NT 6.1; WOW64; Trident / 5.0) Accept-Encoding:gzip,deflate 连接:保持活力 主持人:制作
这是Fiddler对测试请求的原始视图 获取http://test.svc HTTP / 1.1 接受:text / html,application / xhtml + xml, / 接受语言:en-US 用户代理:Mozilla / 5.0(兼容; MSIE 9.0; Windows NT 6.1; WOW64; Trident / 5.0) Accept-Encoding:gzip,deflate 连接:保持活力 主持人:测试
这是尝试使用IE9连接到服务。
到CodeCaster: 它使用框架4并在asp.net v4.0应用程序池中运行。框架4安装在服务器上。如果我使用我设置的测试应用程序,我可以连接到服务并向其中一个方法发送请求,它可以正常工作。
我的问题是使用IE或soapUI连接到服务,因为我们的供应商不会在他们的测试系统上更新他们的端点,直到他们能够这样做。
答案 0 :(得分:0)
HTTP 400是BadRequest
。当服务器拒绝请求时抛出此异常,因为它无法处理它。您收到的错误消息在此上下文中是有意义的。这也意味着服务器 能够找到您的端点。因此,问题可能不在于httpGetEnabled
。
您需要做的是查看发往服务器的HTTP消息。为此,我建议将客户端指向代理(fiddler),然后配置fiddler以将请求转发给服务器。然后,您需要确保请求的格式符合您的预期。