如何解决此错误:授予用户'COMPUTERNAME \ ASPNET'的权限不足以执行此操作。 (rsAccessDenied)

时间:2020-03-06 14:45:24  来源:igfitidea点击:

我正在尝试将SSRS报告集成到我的网页中。
代码如下:

ReportViewer1.ProcessingMode = rocessingMode.Remote;
ReportViewer1.ServerReport.ReportServerUrl = new Uri("http://localhost/reportserver");
ReportViewer1.ServerReport.ReportPath = "/Report Project1/Reconciliation";
List<ReportParameter> paramList = new List<ReportParameter>();
paramList.Add(new ReportParameter("StartDate", startdate.ToString(), false));
paramList.Add(new ReportParameter("EndDate", enddate.ToString(), false));
this.ReportViewer1.ServerReport.SetParameters(paramList);
ReportViewer1.Visible = true;

尝试运行此报告时收到此错误:

The permissions granted to user 'COMPUTERNAME\ASPNET' are insufficient for performing this operation. (rsAccessDenied)"}   
System.Exception {Microsoft.Reporting.WebForms.ReportServerException}

谁能告诉我我在做什么错?

解决方案

问题是ASP.NET辅助进程没有执行所需操作的权限。

在服务器(MACHINENAME \ ASPNET)上编辑此用户,并为其提供更多权限(可能需要写权限等)。

我们还需要将MACHINENAME \ ASPNET作为用户添加到SSRS正在使用的SQL数据库中。

我们需要授予Web应用访问报告的权限。转到报表管理器(http:// servername / reports /)。我通常只是将整个Web服务器的"浏览器"权限授予这些报告。

服务器的帐户名通常为Domain \ servername $。因此,如果服务器名称是" webserver01",而域是Acme,则将授予帐户Acme \ servername $浏览器权限。

我认为我们也可以通过在运行报告的Web应用程序上禁用匿名访问(在IIS中)来解决此问题,这样报告服务将使用用户凭据而不是ASPNET帐户进行身份验证。但这对我们来说可能不是一个可行的解决方案。

为了使Erikk的答案更清楚一点。

我们要设置为修复此错误的特定安全权限集(Reports Manager中至少存在另外两种类型的安全设置)在我们所在的报告文件夹的"属性"选项卡的"安全性"菜单选项中可用看着。

令人遗憾的是,不用说我们不应该完全授予Home文件夹的" Everyone"组的权限,因为该组将继承给所有其他项目和子文件夹,并打开一个巨大的安全漏洞。