(Пожалуйста, обратите внимание, что это не первый запуск только проблема, это происходит каждый раз)генерирующая SSRS 2008 отчет R2 в C# с удаленного ПК работает медленнее, чем от локального ПК
Я хотел бы, если кто-нибудь знает натолкнулся на следующее.
Мы создали приложение C#, которое генерирует отчеты из экземпляра SSRS.
Когда я запускаю это приложение на сервере, где находится экземпляр SSRS, отчет генерируется в + - 6 секунд.
Когда я запускаю то же приложение из удаленного ящика (тот же самый новый, только другой компьютер в экземпляр SSRS), тот же отчет занимает + - 18 секунд.
код используется что-то вроде
ServerReport report = new ServerReport();
report.ReportServerUrl = new System.Uri(reportSetup.ConnectionString);
report.ReportServerCredentials.NetworkCredentials = System.Net.CredentialCache.DefaultCredentials;
report.ReportPath = reportName;
report.SetParameters(reportParams);
byte[] bytes = report.Render("PDF", null, out mimeType, out encoding, out extension, out streamids, out warnings);
где ServerReport
от Microsoft.Reporting.WinForms
из C:\Program Files (x86)\Microsoft Visual Studio 10.0\ReportViewer\Microsoft.ReportViewer.WinForms.dll
(но и попытался веб-версии), а остальное объявляется
Warning[] warnings;
string[] streamids;
string mimeType;
string encoding;
string extension;
List<ReportParameter> reportParams
и reportSetup.ConnectionString имеет вид http://<server name>/ReportServer
(здесь имя сервера - это фактическое имя, но я тоже пробовал с IP-адресом).
Я приурочен к каждому из шагов выше, anf обнаружил, что виновник находится на линии, где он устанавливает параметры. Поэтому я сохранил значения параметров в значениях по умолчанию в фактическом отчете и удалил этот шаг. Тогда рендеринг просто занял больше времени, чем предыдущий.
В дополнение к этому я также попытался изменить учетную запись Reporting Service Configuration Manager Service от сети к локальной учетной записи, и игрался с настройками аутентификации в конфигурационном файле (RSReportServer.config), найденных в C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer
Первоначально параметры проверки подлинности был
<Authentication>
<AuthenticationTypes>
<RSWindowsNegotiate/>
<RSWindowsNTLM/>
</AuthenticationTypes>
<RSWindowsExtendedProtectionLevel>Off</RSWindowsExtendedProtectionLevel>
<RSWindowsExtendedProtectionScenario>Proxy</RSWindowsExtendedProtectionScenario>
<EnableAuthPersistence>true</EnableAuthPersistence>
</Authentication>
Я удалил строку <RSWindowsNegotiate/>
как я прочитал от Authentication Types in Reporting Services
RSWindowsNegotiate
RSWindowsNegotiate направляет сервер отчетов для обработки аутентификации запросов, задающих переговоры. Сначала проведите проверку подлинности Kerberos , но вернемся к NTLM, если Active Directory не может предоставить билет для запроса клиента серверу отчетов. Negotiate вернется только к NTLM, если билет недоступен. Если первая попытка приводит к ошибке, а не отсутствующему биту, сервер отчетов не выполняет вторую попытку.
но это не помогло.
Есть ли у кого-нибудь идеи о том, как исправить любой код или установку SSRS? Я хотел бы, чтобы приложение находилось на отдельном сервере с экземпляром SSRS.
Большое спасибо за усилия. , но по мере того, как первая строка читается ** (Обратите внимание, что это не первый запуск, это происходит каждый раз) ** –