2012-04-12 59 views
1

在我目前正在使用的應用程序中,有一個正在緩存一堆數據的後端Java應用程序。 asp.net部分允許用戶更新數據庫表。每次更新數據庫時,都應清除java應用程序中的緩存。所以基本上我有一個4個URL列表,每個URL都需要點擊才能清除緩存。我的基本解決方案是遍歷每個URL並創建一個HttpWebRequest並獲得響應。所以基本上我有這個每個請求:HttpWebRequest掛起

var request = (HttpWebRequest)WebRequest.Create(url); 
       request.Method = "POST"; 
       request.ContentLength = 0; 

       using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) 
       { 
        Stream receiveStream = response.GetResponseStream(); 
        StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8); 
        string responseString = readStream.ReadToEnd(); 

        returnList.Add(string.Format("Refresh response from {0}.<br />{1}", url, responseString)); 

        readStream.Close(); 
        receiveStream.Close(); 
       } 

在我的本地機器上,一切都很好。但是當我部署到我們的開發服務器時,它只是掛起而不做任何事情。如果我刪除request.ContentLength = 0;,則遠程服務器將引發411:長度預期錯誤。

我真的被困在這裏,任何幫助將不勝感激。

要不就我遇到的問題HttpWebRequest的或不同的解決方案來調用每個URL會工作的解決方案,我不挑剔。

在此先感謝。

回答

0

很確定這是一個網絡問題。我嘗試點擊不同的URL(負載平衡器),並沒有問題,所以java傢伙正在進行更改,所以我可以打負載平衡器和任何服務器的請求結束將確保所有服務器緩存清除。

的代碼工作:

var request = (HttpWebRequest)WebRequest.Create(url); 

      using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) 
      { 
       Stream receiveStream = response.GetResponseStream(); 
       StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8); 
       string responseString = readStream.ReadToEnd(); 

       returnString = string.Format(@"Refresh response from<br />{0}{1}", url, responseString); 

       readStream.Close(); 
       receiveStream.Close(); 
      } 
0

爲什麼使用request.method作爲「POST」?您是否發佈任何數據,如果不嘗試刪除內容長度和請求方法。