我应该编写一些与某个网站合作的程序。它使用HttpWebRequest和HttpWebResponse向服务器发送和接收数据。首先,我的程序在此站点上进行授权,然后准备数据并发送。当我在开发人员的PC上运行我的程序时,它运行良好,没有任何问题,但是当我的程序在客户端的PC上运行时,它无法运行。我远程连接到客户端的PC以获取程序的日志并将其与我的日志进行比较。客户是我们的合作伙伴,他为我提供了测试密码。好吧,我比较log' s它们是一样的!唯一的区别是对最后一个请求的响应:在我的PC上我收到了html页面,但是客户端的PC产生了超时异常。首先,我想,问题是客户端的防火墙,但我的程序如何获取身份验证的cookie和会话的ID信息?我输出了所有WebRequest的参数并进行了比较,但它与我已经说过的相同。
有人可以告诉我,这个错误可能是什么原因以及我如何解决它?
答案 0 :(得分:0)
当我使用Win XP并且我的客户端使用Vista时,我曾遇到过同样的问题。这些webrequest和webesponse调用在内部转换为SOAP调用,并使用Internet Explorer dll之一进行传输。 XP中的默认超时是> Vista请求的默认超时。在与客户的基础架构团队讨论后,我们更改了超时,这就是问题的解决方法。根据{{3}}默认超时为100秒。
答案 1 :(得分:0)
如果没有您的代码,它将使这非常困难,您应该有几个错误处理和验证,以帮助确定错误的位置。一个例子是:
HttpWebRequest request = WebRequest.Create(@"http://stackoverflow.com") as HttpWebRequest;
request.Credentials = NetworkCredentials(@"username", @"password");
request.Timeout = 300;
if(string.IsNullOrEmpty(request))
throw new Exception("Error in Request");
using(var stream = request.GetResponse().GetResponseStream())
using(var writer = File.Create(Environment.GetFolderPath(Environment.SpecialFolder.Desktop))
stream.CopyTo(writer);
我强烈建议您使用Fiddler或浏览器来分析响应/请求。它应该向您展示大量的细节。
没有代码,我们就无法提供更多帮助。