2

我在报告服务器上运行了一个 SSRS 2008 R2 报告。当我使用报告管理器或 Web 服务 URL 访问报告时,它可以正常工作。

http://mycomputer/ReportServer

http://mycomputer/Reports

当我将 ReportViewer 添加到 WebForms 网站并将其指向

http://mycomputer/reportserver 

使用我的报告的报告路径,在使用 VS.net 的网络服务器运行网站时,它会给我一个拒绝访问错误。

授予用户“mycomputer\myusername”的权限不足以执行此操作。(rsAccessDenied)

以下是我在 aspx 页面中使用的确切代码。

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<rsweb:ReportViewer ID="ReportViewer1" runat="server" ProcessingMode="Remote" Font-Names="Verdana"
    Font-Size="8pt" InteractiveDeviceInfos="(Collection)" WaitMessageFont-Names="Verdana"
    WaitMessageFont-Size="14pt" Width="712px">
    <ServerReport ReportPath="/MyReports" ReportServerUrl="http://mycomputer/reportserver" />
</rsweb:ReportViewer>

mycomputer \ myusername 是机器上的管理员。我还在 ReportManager 中将其添加为管理员。

我在管理员模式下使用 IE 运行它。

还有什么可能导致访问被拒绝问题?

我读过其他人有问题,但他们中的大多数都不是针对 2008R2 的,所以我无法弄清楚如何尝试他们所做的事情。没有 IIS 可配置,也没有 IUSR 可授予对报告的访问权限。

SSRS 日志只显示相同的错误消息,没有任何其他信息。

4

1 回答 1

2

创建一个实现 IReportServerCredentials 的实例类应该可以解决该问题。添加以下类并调用如下:

ReportViewer1.ServerReport.ReportServerCredentials = new ReportServerCredentials("username", "pwd", "domain");

/// <summary>
/// Local implementation of IReportServerCredentials
/// </summary>
public class ReportServerCredentials : IReportServerCredentials
{
    private string _userName;
    private string _password;
    private string _domain;

    public ReportServerCredentials(string userName, string password, string domain)
    {
        _userName = userName;
        _password = password;
        _domain = domain;
    }

    public WindowsIdentity ImpersonationUser
    {
        get
        {
            // Use default identity.
            return null;
        }
    }

    public ICredentials NetworkCredentials
    {
        get
        {
            // Use default identity.
            return new NetworkCredential(_userName, _password, _domain);
        }
    }

    public bool GetFormsCredentials(out Cookie authCookie, out string user, out string password, out string authority)
    {
        // Do not use forms credentials to authenticate.
        authCookie = null;
        user = password = authority = null;
        return false;
    }
}

感谢菲尔·克鲁斯:链接

于 2012-10-02T01:47:18.287 回答