0

我需要在 IIS 7.x 中运行的 ASP.NET 应用程序中执行 .rss SSRS 脚本文件。我怎样才能做到这一点?

我是否必须将运行我的 Web 应用程序的 IIS AppPool 配置为具有提升的权限,以便我可以启动 rs.exe 控制台应用程序,将 .rss 脚本传递给它,否则我会在外部执行 .rss 脚本文件IIS?

还是有其他方法?Visual Studio/.NET 是否提供任何机制来引导 .rss 脚本文件而不需要 rs.exe 控制台应用程序?使 rs.exe 控制台应用程序可用于在 IIS 中运行的 Web 应用程序是我唯一的选择吗?

4

1 回答 1

0

所以,我想通了。如果您想知道如何使用 ReportServices2010 代理在您的 SSRS 报告服务器上创建报告的历史快照,这里有一个示例和您可以完成它的一种方法(非常感谢 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);
于 2014-03-11T20:42:19.677 回答