2016-12-30 55 views
1

我們有一個工作正常的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: 
&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd"&gt; 
&lt;HTML&gt;&lt;HEAD&gt;&lt;TITLE&gt;Not Found&lt;/TITLE&gt; 
&lt;META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"&gt;&lt;/HEAD&gt; 
&lt;BODY&gt;&lt;h2&gt;Not Found&lt;/h2&gt; 
&lt;hr&gt;&lt;p&gt;HTTP Error 404. The requested resource is not found.&lt;/p&gt; 
&lt;/BODY&gt;&lt;/HTML&gt; 
</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%肯定我的服務工作正常。

回答

0

事實證明,網絡跟蹤(Wireshark的),我的服務器上透露,我的客戶的代理是修改請求的「主機」,例如,而不是

主持人:ourdomain.com

它被修改像

主持人:proxy.customer.com:8080

所以,當這個請求到達IIS服務器,綁定配置爲「ourdomain.com」,然後將其丟棄請求。出於某種奇怪的原因,一位名爲「Microsoft HTTPAPI」的人回覆了我的客戶正在申請的404錯誤頁面的回覆。

因此,我們有固定的問題,改變我們的IIS綁定,因爲我不想等到我的客戶調查這到底是他的代理與主機名做。

0

您的客戶是否發送了正在發送的實際肥皂請求? 他可以啓用實際的Web服務調用(最簡單的方法是從管理控制檯執行)。

http://knowledgebase.progress.com/articles/Article/S6498

知道它正在發送的確切SOAP請求後,它會更容易調試。

另外,我建議您在測試時放棄服務器中請求的痕跡,以便在其中間進行任何其他修改。

+0

嗨,卡洛斯,現在我已經看到了你的答案,我的服務器中的蹤跡顯示了主機名的修改!不管怎麼說,還是要謝謝你! – Auresco82