我有一个使用域帐户配置应用程序池的 Web 应用程序。在 SSRS 中,域帐户被授予对文件夹的浏览器访问权限,并且 SSRS 报告配置了正确的凭据。
我的问题是,如果 SSRS 报告是从 Web 应用程序启动的,SSRS 报告是在域帐户下打开还是在我的帐户下打开。目前,它正在给出错误消息,因为 \ 没有足够的权限来访问报告位置。
我有一个使用域帐户配置应用程序池的 Web 应用程序。在 SSRS 中,域帐户被授予对文件夹的浏览器访问权限,并且 SSRS 报告配置了正确的凭据。
我的问题是,如果 SSRS 报告是从 Web 应用程序启动的,SSRS 报告是在域帐户下打开还是在我的帐户下打开。目前,它正在给出错误消息,因为 \ 没有足够的权限来访问报告位置。
您只需要在 Web 配置中设置一个固定用户以及 SSRS 地址。通过这种方式,您可以为站点设置默认值,而不是依赖于运行站点的用户:
来自 WPF 应用程序的示例,但在后面的代码中与 ASP.NET 非常相似。
<Button x:Name="btnGetViewerRemoteData" Content="Remote" Click="ReportViewerRemote_Load"/>
在后面的代码中引用元素的名称,确保为“Microsoft.Reporting.WinForms”(或 ASP.NET 等效项)导入命名空间。
private void ResetReportViewer(ProcessingMode mode)
{
this.reportViewer.Clear();
this.reportViewer.LocalReport.DataSources.Clear();
this.reportViewer.ProcessingMode = mode;
}
private ICredentials giveuser(string aUser, string aPassword, string aDomain)
{
return new NetworkCredential(aUser, aPassword, aDomain);
}
private void ReportViewerRemoteWithCred_Load(object sender, EventArgs e)
{
ResetReportViewer(ProcessingMode.Remote);
var user = giveuser("User", "Password", "Domain");
reportViewer.ServerReport.ReportServerCredentials.ImpersonationUser = (System.Security.Principal.WindowsIdentity)user;
;
reportViewer.ServerReport.ReportServerUrl = new Uri(@"http:// (server)/ReportServer");
reportViewer.ServerReport.ReportPath = "/Test/ComboTest";
DataSourceCredentials dsCrendtials = new DataSourceCredentials();
dsCrendtials.Name = "DataSource1";
dsCrendtials.UserId = "User";
dsCrendtials.Password = "Password";
reportViewer.ServerReport.SetDataSourceCredentials(new DataSourceCredentials[] { dsCrendtials });
reportViewer.RefreshReport();
}
我对示例进行了硬编码,但您可以将服务器、用户和密码放在配置文件中。尽管密码的安全性可能是一个问题,因此取决于您的组织,因此最好先对其进行硬编码或屏蔽。