16

我有一个在 Windows 7 机器上运行的 SQL Server 2008 R2 报表服务器以及一个 ASP.NET 应用程序。ASP.NET 应用程序向报表服务器发出请求以显示报表列表、呈现报表等。我的 ASP.NET 应用程序成功获取报表列表,但是当它尝试呈现报表时出现以下错误:

The permissions granted to user 'IIS APPPOOL\DefaultAppPool' are insufficient for performing this operation. (rsAccessDenied)

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: Microsoft.Reporting.WebForms.ReportServerException: The permissions granted to user 'IIS APPPOOL\DefaultAppPool' are insufficient for performing this operation. (rsAccessDenied)

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace: 

[ReportServerException: The permissions granted to user 'IIS APPPOOL\DefaultAppPool' are insufficient for performing this operation. (rsAccessDenied)]
Microsoft.Reporting.WebForms.ServerReportSoapProxy.OnSoapException(SoapException e) +89
Microsoft.Reporting.WebForms.Internal.Soap.ReportingServices2005.Execution.ProxyMethodInvocation.Execute(RSExecutionConnection connection, ProxyMethod`1 initialMethod, ProxyMethod`1 retryMethod) +404
Microsoft.Reporting.WebForms.Internal.Soap.ReportingServices2005.Execution.RSExecutionConnection.LoadReport(String Report, String HistoryID) +180
Microsoft.Reporting.WebForms.ServerReport.EnsureExecutionSession() +79
Microsoft.Reporting.WebForms.ServerReport.GetParameters() +54

注意:相同的代码库在运行 Windows 7 和 Windows Server 2008 的多台机器上运行良好。我一直在尝试基于网络搜索的许多不同的东西,但还没有找到解决方案。对此的任何见解将不胜感激。

4

6 回答 6

31

终于想通了。我的 Reporting Services 配置为本地帐户,而我的 IIS 应用程序池配置为 ApplicationPoolIdentity。我将我的应用程序池更改为 LocalSystem 并修复了它。希望这些信息对其他人有用,因为我浪费了几个小时来弄清楚这一点。

于 2012-06-11T19:55:13.380 回答
20

mreyeros 在评论中提出的另一个解决方案是在报告管理器中将浏览器权限授予 IIS APPPOOL\DefaultAppPool 用户。

为此,您应该在主文件夹中打开报表管理器网站 (http:///Reports),单击文件夹设置 -> 安全,单击新角色分配并输入 IIS APPPOOL\DefaultAppPool 作为名称,从列表中选择权限。

于 2012-09-27T07:16:38.797 回答
4

除了在 Windows Server 2008 R2 上运行的 IIS 和 Report Server 之外,这里的情况几乎相同。我曾经让 asp.net 应用程序使用它自己的应用程序池运行,并且一切正常。当我将应用程序更改为 DefaultAppPool 时(由于不同的问题),我遇到了权限问题。我将 DefaultAppPool 的标识从 ApplicationPoolIdentity 更改为 LocalSystem(在 IIS 中,高级设置中)并且它再次工作。

于 2012-07-19T10:03:53.450 回答
4

正如 Michal Drozdowicz 所说,将 AppPool 用户创建为浏览器角色。缺少的部分是

  1. 用户名(至少在 Windows 2012 上是 'IIS APPPOOL\pool name' 这是将出现在错误页面上的确切名称。在权限对话框中输入时,请勿在用户名周围加上引号。
  2. 必须在主文件夹中创建浏览器角色。当然,如果需要子文件夹的权限,请确保子文件夹还在继承权限或者手动设置
于 2015-01-14T14:32:55.457 回答
2

我不想将我的应用程序池设置为 LocalSystem,因为我认为这是不好的做法。

有关 Microsoft 的建议(不要使用 LocalSystem,使用 ApplicationPoolIdentity),请参见此处: https ://technet.microsoft.com/en-us/library/jj635855.aspx#AppPools 。

有关理由,请参见此处: https ://stackoverflow.com/a/510225/44169

我遇到了描述的错误。我已将我的应用程序池身份添加到我的报表服务器文件夹权限中,但这已被子文件夹的安全设置覆盖。我通过选择子文件夹并单击“恢复到父安全设置”来解决此问题。

于 2016-03-04T10:46:36.480 回答
-1

在 IIS 应用程序池中将 ApplicationPoolIdentity 更改为 LocalSystem 它将被修复。

默认情况下,ApplicationPoolIdentity 无权访问报告服务,即 SSRS 报告

如果您没有更改应用程序的身份帐户,则在应用程序中运行报表时,它将使用默认的身份帐户“ApplicationPoolIdentity”访问报表服务器。默认情况下,默认没有访问报表服务器的权限。因此,在您的场景中,由于应用程序池中的默认身份帐户“ApplicationPoolIdentity”没有访问报表服务器的权限,导致此错误。

欲了解更多信息链接:

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/9593f5a8-09e7-4299-9cf1-5251dd375c38/the-permissions-granted-to-user-iis-apppoolaspnet-v40-are-insufficient-for-performing-this?forum=sqlreportingservices

于 2018-10-24T17:35:46.260 回答