我在客户端使用WebRequest来使用Internet上的Web服务。每个请求都在一个单独的线程中触发。
如果在IIS中托管客户端,它的效果很好。但是,如果客户端托管在Windows服务中,大多数请求都会出现超时错误。
当我尝试使用Fiddler调试问题时,WebRequest运行良好,因为所有流量都经过127.0.0.1:8888
如果没有Fiddler,流量会通过随机端口直接进入Internet,超时问题再次出现。
Windows服务在本地系统帐户下运行。
如果客户端在不使用代理的情况下使用Windows服务,为什么我会抽出时间?
更新:我原来的问题不明确。请求是同时(或以非常短的间隔)进行的。这与ServicePoint类中的连接限制有关。默认情况下,只允许2个连接到同一个外部目标。如果目标是本地的,则限制将是int.Max值。这就是为什么提琴手可以神奇地修复代理问题。所以我手动将DefaultConnectionLimit设置为100,并且请求在线上。
答案 0 :(得分:1)
运行Fiddler“神奇地”修复的最常见问题来源是.NET代码无法在Close()
返回的对象上调用GetResponseStream()
。有关详细信息,请参阅http://www.telerik.com/automated-testing-tools/blog/13-02-28/help-running-fiddler-fixes-my-app.aspx。