1

私が現在取り組んでいるアプリケーションには、大量のデータをキャッシュしているバックエンドJavaアプリがあります。asp.netの部分は、ユーザーがデータベーステーブルを更新できるようにします。DBが更新されるたびに、Javaアプリケーションのキャッシュをクリアする必要があります。つまり、基本的に、キャッシュをクリアするためにそれぞれをヒットする必要がある4つのURLのリストがあります。私の基本的な解決策は、各URLをループして、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を呼び出すための別の解決策のどちらかが機能しますが、私は気が利いていません。

前もって感謝します。

4

2 に答える 2

0

request.methodを「POST」として使用するのはなぜですか?コンテンツの長さとリクエスト方法の両方を削除しようとしない場合は、データを投稿していますか?

于 2012-04-12T18:58:38.547 に答える
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();
            }
于 2012-04-17T19:21:49.513 に答える