【发布时间】:2011-07-21 15:21:31
【问题描述】:
更新
解决方法见底部。
我正在尝试在我的 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);
}
}
}
场景
- 不要跳过
- A - 在
- B - 在
- C - 超时
- 跳过一个
- A - 跳过
- B - 在
- C - 在
- D - 超时
- 随机化
- B - 在
- G - 在
- H - 超时
更新
事实证明。超时的真正原因是 NHibernate 试图更新对象,即使它不应该(长故事)作为调用报告的先决条件。由于某种原因,它在前两次调用调用报告之前成功刷新了调用,但到第三次调用时,它总是落后并导致数据库死锁......因此超时。
【问题讨论】:
标签: c# asp.net-mvc-2 timeout ssrs-2008