SSRS сообщает об истечении времени ожидания при загрузке с использованием System.Net.WebClient - PullRequest
1 голос
/ 21 июля 2011

UPDATE

Смотрите решение внизу.


Я пытаюсь загрузить отчеты в моем приложении 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 секунд </li>
    • B - Успешно <10 секунд </li>
    • C - Тайм-аут
  • Пропустить
    • A - Пропустить
    • B - Успешно в течение <10 секунд </li>
    • C - Успешно в течение <10 секунд </li>
    • D - Тайм-аут
  • Randomize
    • B - Успешно в течение <10 секунд </li>
    • G - Успешно <10 секунд </li>
    • H - Тайм-аут

* * ОБНОВЛЕНИЕ тысячи сорок-девять

Как оказалось. Истинная причина тайм-аутов заключалась в том, что NHibernate пытался обновить объекты, даже если он не должен (длинная история) являться предпосылкой для вызова отчетов. По какой-то причине ему удалось успешно сбросить вызовы до того, как отчет был вызван для первых двух вызовов, но по третьему он всегда отставал и вызывал тупик в базе данных ... отсюда время ожидания.

1 Ответ

0 голосов
/ 21 июля 2011

Windows реализует RFC-совместимый http-клиент, который вы используете в своем коде ... RFC говорит макс. 2 параллельных подключения к одному и тому же серверу разрешены одновременно ... для изменения этого предела вам необходимо отредактировать реестр (см., Например: http://www.pctools.com/guides/registry/detail/536/)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...