Как выполнить файл сценария SSRS .rss в IIS/ASP.NET

Мне нужно выполнить файл скрипта.rss SSRS в приложении ASP.NET, работающем в IIS 7.x. Как я могу это сделать?

Нужно ли настраивать IIS AppPool, на котором запущено мое веб-приложение, с повышенными привилегиями, чтобы я мог запустить консольное приложение rs.exe, передав ему скрипт.rss, так же, как в противном случае я выполняю файл скрипта.rss вне IIS?

Или есть другой способ? Предоставляет ли Visual Studio/.NET какой-либо механизм для начальной загрузки файла сценария.rss без использования консольного приложения rs.exe? Является ли мой единственный вариант сделать консольное приложение rs.exe доступным для моего веб-приложения, работающего в IIS?

1 ответ

Решение

Итак, я понял это. Если вам интересно, как создать моментальный снимок истории отчета на вашем сервере отчетов SSRS с использованием прокси-сервера ReportServices2010, вот один пример и один из способов, которым вы можете это сделать (большое спасибо Kyzen за то, что он поделился своими мыслями и направил меня к SOAP API):

Dim basicHttpBinding As New BasicHttpBinding()
basicHttpBinding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly
basicHttpBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Ntlm
basicHttpBinding.SendTimeout = New TimeSpan(0, 10, 0)
Dim endPoint As New EndpointAddress("http://server/reportserver/ReportService2010.asmx")
Dim instance As New ReportingService2010SoapClient(basicHttpBinding, endPoint)
Dim itemPath As String = "/Path/to/report"
Dim warnings() As Warning
Dim historyId As String = Nothing
Dim values As ParameterValue() = Nothing
Dim credentials As DataSourceCredentials() = Nothing
Dim t As New TrustedUserHeader()
instance.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation
instance.ClientCredentials.Windows.ClientCredential = New Net.NetworkCredential("userid", "password", "domain")
instance.Open()

oServerInfoHeader = instance.CreateItemHistorySnapshot(t, itemPath, historyId, warnings)

и в C#:

BasicHttpBinding basicHttpBinding = new BasicHttpBinding();
basicHttpBinding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly
basicHttpBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Ntlm
basicHttpBinding.SendTimeout = New TimeSpan(0, 10, 0)

EndpointAddress endPoint = new EndpointAddress("http://server/reportserver/ReportService2010.asmx");
ReportingService2010SoapClient instance = new ReportingService2010SoapClient(basicHttpBinding, endPoint);
string itemPath = "/Path/to/report"
Warning warnings[];
string historyId;
ParameterValue values[];
DataSourceCredentials credentials[];
TrustedUserHeader t = new TrustedUserHeader();

instance.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;
instance.ClientCredentials.Windows.ClientCredential = New Net.NetworkCredential("userid", "password", "domain");
instance.Open();

oServerInfoHeader = instance.CreateItemHistorySnapshot(t, itemPath, historyId, warnings);
Другие вопросы по тегам