我有一个windows服务,它会在特定的时间间隔后调用页面。该页面依次创建一些报告。问题是,服务在2-3次调用后停止执行任何操作。正如在中一样,它调用页面2-3次,然后不做任何工作,尽管它显示服务正在运行……我在服务中使用计时器……有人能帮我解决这个问题吗?谢谢
代码:(其中t1是我的计时器)
protected override void OnStart(string[] args)
{
GetRecords();
t1.Elapsed += new ElapsedEventHandler(OnElapsedTime);
t1.Interval = //SomeTimeInterval
t1.Enabled = true;
t1.Start();
}
private void OnElapsedTime(object source, ElapsedEventArgs e)
{
try
{
GetRecords();
}
catch (Exception ex)
{
EventLog.WriteEntry(ex.Message);
}
}
public void GetRecords()
{
try
{
string ConnectionString = //Connection string from web.config
WebRequest Request = HttpWebRequest.Create(ConnectionString);
Request.Timeout = 100000000;
HttpWebResponse Response = (HttpWebResponse)Request.GetResponse();
}
catch (Exception ex)
{
}
}发布于 2009-02-25 07:51:38
我认为你遗漏了一些关于处置你的对象的东西,比如StreamReader,WebRequest等等。在使用昂贵的对象之后,您应该将它们处理掉。
发布于 2009-02-25 07:47:37
那么,代码是什么样子的呢?WebClient是查询页面的最简单方法:
string result;
using (WebClient client = new WebClient()) {
result = client.DownloadString(address);
}
// do something with `result`如果计时器代码停止,它也可能会出问题。
发布于 2009-08-26 07:21:29
HttpWebRequest可能会限制对特定页面或服务器的并发HTTP请求的数量,这通常是适当的HTTP客户端实践。
您没有正确处理对象的事实很可能意味着您正在维护2到3个到特定页面的连接,每个连接都具有较大的超时值,并且HttpWebRequest会排队或忽略您的请求,直到前几个请求完成(由于客户端或服务器超时,在本例中最有可能是服务器)。
添加一个'finally‘子句,正确地处理你的对象!
https://stackoverflow.com/questions/585064
复制相似问题