2012-04-12 13 views
1

私は現在、データの束をキャッシュしているバックエンドのJavaアプリケーションがあります。 asp.netの部分では、ユーザーはデータベーステーブルを更新できます。 DBが更新されるたびに、Javaアプリケーションのキャッシュをクリアする必要があります。だから、基本的に私はキャッシュをクリアするためにそれぞれヒットする必要がある4つのURLのリストを持っています。私の基本的な解決策は、各URLをループし、HttpWebRequestを作成し、応答を得ることでした。だから基本的に私は毎回のリクエストごとにこれを持っています:HttpWebRequest Hanging

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:Lengthの予想されるエラーをスローします。

私は本当にここにこだわっていて、どんな助けでも大歓迎です。

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"として使用していますか?コンテンツの長さとリクエスト方法の両方を削除しない場合は、データを投稿していますか?