我有一个简单的Windows服务(C#),它使用计时器每隔15分钟检查一次外部API。
服务运行正常,直到机器休眠,然后经过几次迭代(大约40分钟)后,它会丢失互联网并且所有请求都会超时。此行为可在计算机,帐户等之间重现,并且在重新启动服务之前不会恢复。
奇怪的是,如果我们让Fiddler在机器上运行,就不会发生这种情况 - 该服务将运行几天而没有任何问题。
我们尝试在自定义/管理帐户,NetworkService和LocalService帐户下运行它,允许用户作为操作系统运行,在nic上节能配置,尝试多台计算机(7和Server 08),将所有代码移植到一个WinForms应用程序 - 所有具有相同的行为。
我正在拔头发并希望“与Fiddler一起工作”会引起知情人士的注意......我的下一个测试是写一个“控制器服务”来停止/重启第一个服务但是我讨厌那个溶液
*已更新,这是发出API请求的代码
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(uriDomain + uriLogin);
WebResponse resp = req.GetResponse();
并下载可用文件
using (WebClient client = new WebClient())
{
client.Headers["Cookie"] = persistCookie;
client.DownloadFile(uriDomain + fileName, localStoragePath + fileName);
}
.net CLR应该回收连接 - 这些对象没有明确的关闭等。此外,我不明白运行Fiddler如何使一切工作正常。
感谢
答案 0 :(得分:0)
听起来你的联系已经不多了。
快速测试是将时间从15分钟更改为1分钟,然后重复测试。如果它失败得更快,那么服务很可能没有正确关闭连接。最终你会达到极限。