1

在我目前正在处理的应用程序中,有一个后端 java 应用程序正在缓存一堆数据。asp.net 部分允许用户更新数据库表。每次更新数据库时,都应清除 Java 应用程序中的缓存。所以基本上我有一个 4 个 URL 的列表,每个 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: Length expected 错误。

我真的被困在这里,任何帮助将不胜感激。

我遇到的 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 回答