我正在努力使用IIS和SOAP Web服务并需要提示。
我使用BizTalk Orchestration创建一个简单的Web服务,它调用sql存储过程(针对BizTalk部署并作为WCF服务发布)。 我碰巧在我的开发机器上工作,但是当我将服务传输到测试环境时,它无法按预期工作。
首先发布Webservice本身,我可以通过下载WSDL文件并将其添加到SoapUI来订阅它。
但是一旦我尝试调用请求,Web服务器就会返回一个HTTP 404作为响应。如果我停止BizTalk Orchestration,我会得到一个HTTP 500。 所以我猜BizTalk到IIS连接工作。 但是没有任何消息部署到MessageBox(在BizTalk中我过滤了端口名称上的消息)
部署了大约30个其他WebServices,它们都使用相同的Web.config。它们链接到IIS中的相同AppPool。
我尝试的事情:
为应用程序创建单个IIS AppPool
检查目录和BizTalk- / IIS用户的正确权限
重新部署的解决方案并将其重新发布为服务
是的,这是一个糟糕的声明,但它适用于我的开发机器。除了目标是集群系统之外,其配置与目标平台相同。但我不认为这就是问题所在。
IIS中的日志只显示请求,但没有相关信息。 我真的不知道在哪里看。有人有想法吗?
编辑我:
SOAP响应
<body>
<div id="header">
<h1>Server Error</h1>
</div>
<div id="content">
<div class="content-container">
<fieldset>
<h2>404 - File or directory not found.</h2>
<h3>The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable.</h3>
</fieldset>
</div>
</div>
</body>
答案 0 :(得分:1)
我发现了问题。
我们的Test-和Prod-Environment之前有一个内部负载均衡,它可以自动将通信从http切换到https。
BizTalk中WebService的WCF-CustomIsolated Receivelocation将BasicHttpSecurityElement的basicHttpBinding选项设置为none。这导致了Http 404找不到错误。在将其设置为“transport”之后,它能够在负载均衡器中处理https重写并且它能够正常工作。
404 Not found =传输安全失败。