在我目前正在开发的应用程序中,有一个后端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问题的解决方案,还是调用每个网址的不同解决方案,我都不挑剔。
提前谢谢。
发布于 2012-04-18 03:21:50
我很确定这是网络问题。我尝试访问不同的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-13 02:58:39
为什么使用request.method作为"POST"?您是否发布了任何数据,如果没有,请尝试删除内容长度和请求方法。
https://stackoverflow.com/questions/10128557
复制相似问题