0

我在客户端中使用 WebRequest 来使用 Internet 上的 Web 服务。每个请求都在单独的线程中触发。

如果在 IIS 中托管客户端,它会很好地工作。但是如果客户端托管在 Windows 服务中,大多数请求都会出现超时错误。

当我尝试使用 Fiddler 调试问题时,WebRequest 运行良好,所有流量都通过 127.0.0.1:8888

如果没有 Fiddler,流量直接通过随机端口进入 Internet,超时问题再次出现。

Windows 服务在本地系统帐户下运行。

如果客户端在 Windows 服务中而不使用代理,为什么我会超时?

更新:我最初的问题并不清楚。这些请求是同时发出的(或以非常短的间隔)。这与 ServicePoint 类中的连接限制有关。默认情况下,仅允许 2 个连接到同一个外部目标。如果目的地是本地的,则限制将是 int.Max 值。这就是为什么提琴手可以神奇地解决代理问题。所以我手动将 DefaultConnectionLimit 设置为 100,并且请求是在线的。

在 C# 中调整 HttpWebRequest 连接超时

4

1 回答 1

1

通过运行 Fiddler “神奇地”修复的最常见问题来源是当您的 .NET 代码无法调用Close()GetResponseStream(). 有关详细信息,请参阅http://www.telerik.com/automated-testing-tools/blog/13-02-28/help-running-fiddler-fixes-my-app.aspx 。

于 2013-09-30T11:57:05.973 回答