我正在使用此代码从Internet地址接收数据。但是,当计时器第一次打勾时连接正常并且程序正常工作。 但是第二次,此行引发了错误:
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
我想知道如何解决这个问题。
计时器间隔为30秒。
代码:
private void timer1_Tick(object sender, EventArgs e)
{
WebRequest request = WebRequest.Create("http://localhost
/go/online.asp?prog=y&rln=" + Properties.Settings.Default.cos);
request.Credentials = CredentialCache.DefaultCredentials;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
reader.Close();
dataStream.Close();
response.Close();
}
错误: WebException未处理。 远程服务器返回错误:(500)内部服务器错误。
答案 0 :(得分:5)
通常当我使用计时器时,我会在开始处理之前停止计时器,然后在完成处理后重新启动计时器。试试看,看看它是否有效。
答案 1 :(得分:2)
主要是因为前一个请求未在下一个计时器滴答时完成。 第一步是你应该编写try / catch块来处理错误(或者只是忽略)。另请参阅您获得的异常类型。
或者,你可以使用套接字以一些等待时间递归地执行该函数。
答案 2 :(得分:1)
也许您可以在计时器事件处理程序中停用计时器,并在最后对其进行反应。
答案 3 :(得分:0)
如果它是(500) Internal Server Error
,那么你必须检查服务器以查看错误是什么。由于它是localhost,我假设您可以访问服务器。这就是错误所在的地方。