我們有一個工作正常的WCF服務,有4個客戶使用此服務沒有問題,但我有一個客戶抱怨他無法再調用Web服務最近幾天。從Sonic ESB調用WCF服務的錯誤404
自10月以來我們沒有改變任何東西,他還聲稱他沒有改變任何東西。
正如我所說的,我有其他客戶使用這項服務就好了,我們也可以從SOAP UI調用服務。我們甚至試圖在AWS中創建一個新的獨立機器並調用該服務,以確保它不是阻止來自我們網絡外部的通信的防火牆問題。
從我發現的堆棧跟蹤中可以看到,該客戶使用Sonic ESB來調用我們的服務。我真的不明白Sonic ESB是如何工作的,但我的猜測是這個錯誤是由Sonic ESB造成的,而不是我的服務。這就像它在他的應用程序和我的服務之間創建了一個「適配器」。
害得我這得出以下結論:
1)在他的要求XML展望(他送我),我可以看到,它不符合我所提供的WSDL,比如:
(我已經改變了一些名稱和值,原因很明顯)
<CreateOrderGatewayCompanyName> --> This would be just CreateOrderGateway
<header> --> this header seems specific to Sonic ESB, nothing to do with us
<user>123414714</user>
<idProcess>5411251</idProcess>
<channel>EB</channel>
<ip>[ip number here]</ip>
<sessionId>1fd5a3f4d8f4dsa5f4dsaf4dsf1da5.xyz</sessionId>
</header>
<body>
<idCampania>xyz</idCampania> --> This would be "CampaignId"
...
<order>
...
<fecha>2016-12-21</fecha> --> This would be "Date"
...
</order>
</body>
</CreateOrderGatewayCompanyName>
所以我只能得出結論的過程中某處時,ESB將這個奇怪的XML轉換成正確的SOAP請求格式我的服務期待。
2)看着他送我的異常堆棧跟蹤,我可以看到這個404錯誤:
<?xml version="1.0" encoding="UTF-8"?>
<exception xmlns="http://www.sonicsw.com/sonicesb/exception">
<message>Exception while retrieving soap envelope from response:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>Not Found</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
<BODY><h2>Not Found</h2>
<hr><p>HTTP Error 404. The requested resource is not found.</p>
</BODY></HTML>
</message>
<class>com.sonicsw.xqimpl.invkimpl.wsif.providers.axissoap.SoapProviderInvocationException</class>
<detail/>
<stackTrace><![CDATA[org.xml.sax.SAXParseException: White spaces are required between publicId and systemId.
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source)
...
這裏是事,他越來越爲響應不來這404 HTML代碼從我的服務器,因爲我們使用IIS 8.5和IIS的404錯誤頁面看起來不像這個,HTML是不同的,並且消息也不同。它會是這樣的:
「404 - 文件或目錄未找到。 您正在尋找的資源可能已被刪除,更名後,..「
那麼有人知道這個Sonic ESB實際上是否在應用程序中創建了一個適配器或代理?如果有人已經遇到這樣的錯誤,那麼原因是什麼?我100%肯定我的服務工作正常。
嗨,卡洛斯,現在我已經看到了你的答案,我的服務器中的蹤跡顯示了主機名的修改!不管怎麼說,還是要謝謝你! – Auresco82