我有一個Azure Web角色,它訪問基於外部WCF的SOAP Web服務(端口80)以獲取各種數據位。這項服務的反應非常不穩定。我經常得到以下錯誤。訪問外部Web服務的Azure Web角色問題
沒有端點收聽 http://www.myexternalservice.com/service.svc可以接受該消息。這通常是由不正確的地址或SOAP操作導致的 。
要隔離問題,我創建了一個簡單的控制檯應用程序,以1秒的間隔重複調用此服務並記錄所有響應。
using (var svc = new MyExternalService())
{
stopwatch.Start();
var response = svc.CallService();
stopwatch.Stop();
Log(response, stopwatch.ElapsedMilliseconds);
}
如果我RDP到我的Azure的web實例之一,並運行這個程序需要10至20次嘗試獲取來自外部服務的有效響應之前。這些第一次嘗試總是伴隨着上述錯誤。在這個「熱身期」之後,它運行良好。如果我停止了應用程序,然後立即重新啓動,它必須通過相同的「預熱」時間返回。
然而,如果我跑其他任何計算機此相同的應用程序,我立即收到有效答卷。我在運行於多個數據中心(非Azure)的服務器,不同網絡上的桌面等上運行此記錄器應用程序......這些測試運行始終非常穩定。
我不確定爲什麼這個服務會在Azure環境中以這種方式反應。不幸的是,短期內我不得不打電話給這項服務,但我的用戶不能容忍這種不一致。
Azure服務器上的網絡流量捕獲指示大量SynReTransmit以10秒的間隔在我遇到連接錯誤的同一時間內。一旦「預熱」完成,SynReTransmit不再發生。
你可以得到一個網絡跟蹤,看看你回來了什麼? – Tom 2012-02-28 15:56:18
我現在正在安裝WireShark。 – 2012-02-28 16:03:24
看起來這些請求從未將其發送到Web服務服務器。網絡流量捕獲指示多個SynReTransmit沒有相關響應。 – 2012-02-28 20:49:34