我被困住了,我调用一个简单的报告服务器URL返回报告的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运行并在开发和测试服务器中部署时停止工作时,此代码运行得非常好!
我只是希望它至少通过异常或返回未经授权或任何其他状态代码,然后我将能够调试这个问题。
有什么建议我可以试着调试它吗?
你试过把它放置24天20小时31分24秒吗?换句话说,您是否与设置的超时时间一样长?
服务器没有返回响应,代码正在等待int。MaxValue毫秒来告诉你。最可能的原因是客户机和服务器之间有一段网络基础设施正在停止请求。这可能是防火墙或代理。也可能是由于服务器不喜欢请求而拒绝响应。
我想尝试的事情:
- 尝试在代码失败的机器上通过web浏览器访问URL。
- 将超时设置为合理的东西,如一分钟,并运行请求到超时
- 尝试从客户端机器ping远程服务器。
- 使用Fiddler之类的产品来检查实际发送和接收的内容。
- 与你的网络提供商聊天,看看他们是否可以提供帮助。
- 检查服务器日志,看看服务器是否有错误。
- 将第一个日志更改为
Log.Write("Log before: " + url);
,以检查实际请求的内容。