我有一个简单的 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 如何使一切正常工作。
谢谢