更新
请参阅底部的解决方案。
我正在尝试在我的ASP.Net MVC应用程序中循环下载报告。前两个总是成功,第三个总是失败。我运行它们的顺序并不重要,它总是第三个失败(这意味着它不是特定的报告,而是重要的顺序)。当报告成功时,它们总是在10秒内回来,所以它并不是真正的超时。请参阅以下代码和方案。
public Stream SomeMethodThatDownloadReports(string link)
{
using (var webClient = new WebClient())
{
webClient.Credentials = configuration.GetNetworkCredentialsForDownload();
try
{
return new MemoryStream(webClient.DownloadData(link));
}
catch (Exception ex)
{
throw new ReportDownloadFailureException(string.Format("Problem accessing Report. Report Url = {0}", link), ex);
}
}
}
事实证明。超时的真正原因是NHibernate试图更新对象,即使它不应该(长篇故事)作为调用报告的先决条件。出于某种原因,它成功地在调用前两个调用的报告之前成功刷新了调用,但是在第三个调用之后,它总是落后并导致数据库死锁...因此超时。
答案 0 :(得分:0)
Windows实现了您在代码中使用的符合RFC的http客户端... RFC说最大。同时允许2个到同一服务器的并行连接...为了限制你需要编辑注册表(参见例如:http://www.pctools.com/guides/registry/detail/536/)