2014-02-27 163 views
6

我正在使用來自url的Web服務。當我使用SoapUI進行測試時,我立即得到響應(請參閱下圖),並且我發送的請求數據通過了另一端。WCF Web服務調用超時

所以在我的C#應用​​程序中,我做了同樣的事情,我使用了Web服務wsdl並自動生成了代理類。我使用與在SoapUI中使用的完全相同的請求數據創建了基於該代理類的請求併發送出去。我確認在另一端他們成功地收到了我的數據,沒有顯示錯誤。

但是,我從來沒有收到任何ID後面,一段時間後,我會得到這個異常:

錯誤的HTTP請求「http://someURLWebservice.com/WSoperation」已超過00所分配的超時時間:00:59.9470000。分配給此操作的時間可能是超時時間的一部分。

我在這裏錯過了什麼嗎?我下載了WSDL並使用SoapUI生成了模擬服務,如果我在本地打電話給該模擬Web服務,我會馬上得到它。

這裏是我的代碼:

string serverURL = Settings.Default.ExtensionServiceURL; 

//Get Proxy class client 
ext.ExtWSPortTypeClient client = new ext.ExtWSPortTypeClient(); 
EndpointAddress addr = new EndpointAddress(serverURL); 

try 
    { 
     client.Endpoint.Address = addr; 
     Uri site = new Uri(serverURL); 
     client.Endpoint.ListenUri = site; 
     ExtensionData eData = new ExtensionData(); 
     client.ChannelFactory.CreateChannel(); 

     Console.WriteLine("Sending Locator Event Request to Web Service"); 
     ext.locatorEventResponse1 resp = await client.locatorEventAsync(eData.GenerateLocatorEventRequest(ev)); 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine("Error " + ex.Message); 
    } 
    finally 
    { 
     if (client != null) 
     { 
      ((ICommunicationObject)client).Close(); 
     } 
    } 

enter image description here

+0

有人嗎? :(...我試過這個相同的代碼來測試一個Web服務在http://www.webservicex.net/geoipservice.asmx?WSDL,我得到了與我的應用程序的響應馬上。 – Fylix

+0

你的設置如何服務器端? –

+0

這是困難的部分,我正在寫這個集成,所以我沒有任何想法是誠實的,但是,如果你能指出一些事情,我應該與他們檢查,那也會有幫助。 – Fylix

回答

3

因此,我最終配置Fiddler2來嗅探我的SoapUI請求,並將其與我的應用程序請求進行比較。在應用程序請求頭,我看到以下內容:

Content-Type: text/xml; charset=utf-8 
SOAPAction: "" 
Host: engage.ext-inc.com 
Content-Length: 1036 
**Expect: 100-continue** 

那些期望:100繼續不soapUI的請求,其發送成功,並得到了響應。考慮到這一點,我在Fiddler中接受了SoapUI請求,並在其上構建了一個新的基礎...除了我放入Expect:100-繼續並猜測什麼,我沒有收到任何迴應。

在閱讀這件事我碰到這個link

瞧,在把ServicePointManager.Expect100Continue = FALSE;進入我的代碼,然後再進行Web服務調用,我馬上得到響應。

0

檢查郵件配額設置,它可能是您的服務發送比配置

3

在類似的情況多了,我將從以下開始:

使用WCF客戶端進行測試並捕獲跟蹤文件:

測試保存跟蹤日誌數據與soapUI的客戶端並捕獲Http日誌

  • 清除soapUI http日誌(其中一個選項卡Ë底部)
  • 通過soapUI的測試請求
  • 保存發送的消息中的HTTP日誌

一旦你有兩個客戶端的跟蹤信息,你應該能夠比較交易,並希望確定源的問題。特別是,我會建議雙方確認服務地址,然後比較SOAP信封以確保WCF綁定與soapUI設置一致。

另外,您還可以使用Fiddler查看Web服務通信。以下SO帖子提供了很好的參考鏈接。 Fiddler and Monitoring Web Service Traffic

希望這會有所幫助。
Regards,