SSRS报告使用System.Net.WebClient下载时超时

时间:2011-07-21 15:21:32

标签: c# asp.net-mvc-2 timeout ssrs-2008

更新

请参阅底部的解决方案。


我正在尝试在我的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 - 成功< 10秒
    • B - 成功< 10秒
    • C - 超时
  • 跳过一个
    • A - Skip
    • B - 成功< 10秒
    • C - 成功< 10秒
    • D - 超时
  • 随机化
    • B - 成功< 10秒
    • G - 成功< 10秒
    • H - 超时

更新

事实证明。超时的真正原因是NHibernate试图更新对象,即使它不应该(长篇故事)作为调用报告的先决条件。出于某种原因,它成功地在调用前两个调用的报告之前成功刷新了调用,但是在第三个调用之后,它总是落后并导致数据库死锁...因此超时。

1 个答案:

答案 0 :(得分:0)

Windows实现了您在代码中使用的符合RFC的http客户端... RFC说最大。同时允许2个到同一服务器的并行连接...为了限制你需要编辑注册表(参见例如:http://www.pctools.com/guides/registry/detail/536/