HttpWebRequest挂

时间:2012-04-12 17:20:17

标签: asp.net httpwebrequest

在我目前正在开发的应用程序中,有一个后端java应用程序正在缓存一堆数据。 asp.net部分允许用户更新数据库表。每次更新DB时,都应清除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预期错误。

我真的被困在这里,非常感谢任何帮助。

我遇到的HttpWebRequest问题的解决方案或调用每个URL的不同解决方案都可行,我不挑剔。

提前致谢。

2 个答案:

答案 0 :(得分:0)

为什么将request.method用作“POST”?您是否发布任何数据,如果没有尝试删除内容长度和请求方法。

答案 1 :(得分: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();
            }