访问报表服务器的 AppPool 权限问题
Posted
技术标签:
【中文标题】访问报表服务器的 AppPool 权限问题【英文标题】:AppPool Permission Issue with Accessing Report Server 【发布时间】:2012-06-14 17:32:25 【问题描述】:我有一个在 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 的多台机器上运行良好。我一直在尝试基于网络搜索的许多不同的东西,但还没有找到解决方案。任何对此的见解将不胜感激。
【问题讨论】:
您是否确保 APPPool 标识“IIS APPPOOL\DefaultAppPool”有权访问报表服务器。它至少应该有浏览器访问权限 这对我有帮助。如果您不介意,我会将其作为答案提出,以便可见。 为了快速临时更改,我能够做到这一点。我在 Visual Studio 中调试时看到了这个错误。我注意到我的项目属性 > web > 服务器,选择了“使用本地 IIS Wev 服务器”。我通常这样做是为了复制生产环境。切换到“使用 Visual Studio 开发服务器”允许我调试报告。 【参考方案1】:终于弄明白了。我的 Reporting Services 配置为本地帐户,而我的 IIS 应用程序池配置为 ApplicationPoolIdentity。我将我的应用程序池更改为 LocalSystem 并修复了它。希望这些信息对其他人有用,因为我浪费了几个小时来弄清楚这一点。
【讨论】:
感谢您抽出宝贵时间分享您的答案!不要忘记将其标记为已接受的答案! 为了澄清需要此信息的其他人:应用程序池 > [YourApp] > 设置应用程序池默认值 > 在进程模型下,将身份更改为“LocalSystem” 在系统账户下运行Application Pool会不会很危险? 我在安全网络上使用它,而不是将其暴露给外界。所以在我的情况下,安全并不是一个大问题。 我发现报表服务器上的权限正在授予整个框 hostname$ 并且权限已设置回应用程序池标识。谢谢!【参考方案2】:另一个解决方案,如 mreyeros 在评论中所说,将浏览器权限授予报表管理器中的 IIS APPPOOL\DefaultAppPool 用户。
为此,您应该在主文件夹中打开报表管理器网站 (http:///Reports),单击文件夹设置 -> 安全,单击新角色分配并输入 IIS APPPOOL\DefaultAppPool 作为名称,从列表中选择权限.
【讨论】:
这是我一直在寻找的答案,因为我不想将 AD 帐户放在应用程序池中,但我无法让它工作。您是否尝试过与允许应用程序池相关的其他任何操作,例如我尝试重新启动报表服务器。 我同意这是一个更好的解决方案,因为它适用于 IIS 的当前配置,而不是更改站点的安全性。 ApplicationPoolIdentity 允许更精细的控制(即每个站点都可以访问它需要的数据库)。谢谢迈克尔。【参考方案3】:这里的情况几乎相同,除了在 Windows Server 2008 R2 上运行的 IIS 和报表服务器。我曾经让 asp.net 应用程序使用它自己的应用程序池运行,并且一切正常。当我将应用程序更改为 DefaultAppPool 时(由于不同的问题),我遇到了权限问题。我将 DefaultAppPool 的标识从 ApplicationPoolIdentity 更改为 LocalSystem(在 IIS 中,高级设置中),它再次工作。
【讨论】:
【参考方案4】:正如 Michal Drozdowicz 所说,将 AppPool 用户创建为浏览器角色。缺少的部分是
-
用户的名称(至少在 Windows 2012 上是 'IIS APPPOOL\pool name' 这是将出现在错误页面上的确切名称。在权限对话框中输入时不要在用户名周围加上引号.
必须在主文件夹中创建浏览器角色。当然,如果您需要子文件夹的权限,请确保该子文件夹仍在继承权限或手动设置它
【讨论】:
【参考方案5】:我不想将我的应用程序池设置为 LocalSystem,因为我认为这是不好的做法。
有关 Microsoft 的建议(不要使用 LocalSystem,使用 ApplicationPoolIdentity),请参见此处: https://technet.microsoft.com/en-us/library/jj635855.aspx#AppPools.
有关理由,请参见此处: https://***.com/a/510225/44169
我遇到了描述的错误。我已将我的应用程序池身份添加到我的报表服务器文件夹权限中,但这已被子文件夹的安全设置覆盖。我通过选择子文件夹并单击“恢复到父安全设置”来解决此问题。
【讨论】:
【参考方案6】:在 IIS 应用程序池中将 ApplicationPoolIdentity 更改为 LocalSystem 并且它将被修复。
默认情况下 ApplicationPoolIdentity 无权访问报告服务,即 s-s-rS 报告
如果您没有更改应用程序的身份帐户,则在应用程序中运行报表时,它将使用默认身份帐户“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
【讨论】:
以上是关于访问报表服务器的 AppPool 权限问题的主要内容,如果未能解决你的问题,请参考以下文章