1

我有一个使用域帐户配置应用程序池的 Web 应用程序。在 SSRS 中,域帐户被授予对文件夹的浏览器访问权限,并且 SSRS 报告配置了正确的凭据。

我的问题是,如果 SSRS 报告是从 Web 应用程序启动的,SSRS 报告是在域帐户下打开还是在我的帐户下打开。目前,它正在给出错误消息,因为 \ 没有足够的权限来访问报告位置。

4

1 回答 1

3

您只需要在 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();
    }

我对示例进行了硬编码,但您可以将服务器、用户和密码放在配置文件中。尽管密码的安全性可能是一个问题,因此取决于您的组织,因此最好先对其进行硬编码或屏蔽。

于 2013-09-30T17:55:40.497 回答