0

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

谢谢

4

1 回答 1

0

听起来你的连接用完了。

快速测试是将时间从 15 分钟更改为 1 分钟,然后重复测试。如果它失败得更快,那么服务很可能没有正确关闭连接。最终你会达到极限。

于 2017-10-01T18:26:58.790 回答