WebRequest.GetResponse没有返回任何内容

时间:2016-10-06 08:17:39

标签: c# httpwebrequest webresponse

我对此感到困惑,我正在调用一个简单的报表服务器网址来返回报表的PDF,但奇怪的是WebRequest.GetResponse方法并没有返回任何内容,当我这样说时,我的意思是代码只是在那一刻停止执行,没有异常,没有错误,没有状态代码,没有事件查看器登录服务器,没有!所以我无法调试它

这是我的代码

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.PreAuthenticate = true;
req.UseDefaultCredentials = true;
req.Credentials = CredentialCache.DefaultNetworkCredentials;
req.ImpersonationLevel = TokenImpersonationLevel.Impersonation;
req.Timeout = int.MaxValue;

Log.Write("Log before");

var response = req.GetResponse();

Log.Write("Log after");

它只打印Log before日志,之后没有打印任何内容。

当我在visual studio中运行时,这段代码运行得非常好,当它在开发和测试服务器中部署时停止工作!

我只是期望它至少通过异常或返回未经授权或任何其他状态代码,然后我将能够调试该问题。

我可以尝试调试它的任何建议吗?

1 个答案:

答案 0 :(得分:2)

您是否尝试过24天20小时31分24秒?换句话说,只要您将超时设置为?

,您是否已离开它?

服务器没有返回响应,代码正在等待int.MaxValue毫秒来告诉你。最可能的原因是客户端和服务器之间存在一个停止请求的网络基础结构。这可能是防火墙或代理。它也可能是由服务器不喜欢请求并拒绝回复引起的。

我会尝试的事情:

  1. 尝试通过代码失败的计算机上的Web浏览器访问URL。
  2. 将超时设置为合理的一分钟,然后运行请求超时。
  3. 从客户端计算机尝试pinging远程服务器。
  4. 使用Fiddler等产品检查实际发送和接收的内容。
  5. 与您的网络提供商聊天,看看他们是否可以提供帮助。
  6. 检查服务器日志以查看服务器是否存在错误。
  7. 将第一个日志更改为MyClass item = ... var listBoxItem = (ListBoxItem)listBox.ItemContainerGenerator.ContainerFromItem(item); 以检查实际请求的内容。