2011-06-21 219 views
1

使用在Azure上作爲計劃任務運行的控制檯應用程序在Azure上運行的所有長(ish)網頁。幾分鐘後底層連接已關閉:接收時發生意外錯誤

問題:基礎連接已關閉:意外出錯一個接收

//// used as WebClient doesn't support timeout 
public class ExtendedWebClient : WebClient 
{ 
    public int Timeout { get; set; } 

    protected override WebRequest GetWebRequest(Uri address) 
    { 
     HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address); 
     if (request != null) 
      request.Timeout = Timeout; 
     request.KeepAlive = false; 
     request.ProtocolVersion = HttpVersion.Version10; 
     return request; 
    } 

    public ExtendedWebClient() 
    { 
     Timeout = 1000000; // in ms.. the standard is 100,000 
    } 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 
     var taskUrl = "http://www.secret.com/secret.aspx"; 
     // create a webclient and issue an HTTP get to our url 
     using (ExtendedWebClient httpRequest = new ExtendedWebClient()) 
     { 
      var output = httpRequest.DownloadString(taskUrl); 
     } 
    } 
} 

回答

2

請注意,Windows Azure負載平衡器在60秒後終止空閒TCP連接。它看起來像是通過負載平衡器調用的...有沒有可能在60秒內沒有發送任何東西?

+0

沒有完全解決..但要去一個控制檯應用程序。 –

0

運行像Wireshark的觀看連接,並找出哪些端關閉它。這種奇怪可能是由於你和你的服務器之間的路由器MTU低於你的。我想你可以在WCF配置中設置MTU,不知道Azure。

+0

喜彼得 - Chrome上運行時,它後45secs ...不知道這是否是顯著某種存活的。用Wireshark得到了這個..乾杯。開始努力......考慮重新設計! TCP [TCP Keep-Alive] 61687> http [ACK] Seq = 0 Ack = 1 Win = 65700 Len = 1 –

相關問題