Вопрос по reporting-services, asp.net, iis, reporting – Проблема разрешения AppPool с доступом к серверу отчетов

14

У меня есть сервер отчетов SQL Server 2008 R2, работающий на компьютере под управлением Windows 7, а также приложение 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. Я пробовал много разных вещей, основанных на поиске в Интернете, но не нашел решения. Любое понимание этого будет с благодарностью.

Это помогло мне. Если вы не возражаете, я поставлю это в качестве ответа, чтобы он был виден. Michał Drozdowicz
Вы убедились, что идентификатор APPPool, «IIS APPPOOL \ DefaultAppPool» имеет доступ к серверу отчетов. Должен иметь как минимум браузерный доступ mreyeros
Для быстрого временного изменения я смог сделать это. Я видел эту ошибку при отладке в Visual Studio. Я заметил свойства моего проекта & gt; Интернет & gt; серверы, у которых был выбран вариант «Использовать локальный IIS Wev сервер». Обычно я делаю это для репликации производственной среды. Переключение на «Использовать Visual Studio Development Server» позволил мне отладить отчет. JabberwockyDecompiler

Ваш Ответ

6   ответов
4

за исключением IIS и сервера отчетов, работающих на Windows Server 2008 R2. Раньше у меня было приложение asp.net, работающее с собственным пулом приложений, и все работало. Когда я изменил приложение на DefaultAppPool (из-за другой проблемы), я получил проблему с разрешениями. Я изменил Идентичность DefaultAppPool с ApplicationPoolIdentity на LocalSystem (в IIS, Расширенные настройки), и он снова заработал.

17

как отметил mreyeros в комментарии, - предоставить браузеру разрешение для пользователя IIS APPPOOL \ DefaultAppPool в диспетчере отчетов.

Для этого необходимо открыть веб-сайт диспетчера отчетов (http: /// Reports) в домашней папке, щелкнув Параметры папки - & gt; Безопасность, нажмите New Role Assignment и введите IIS APPPOOL \ DefaultAppPool в качестве имени, выберите разрешения из списка.

Михал, большое спасибо за публикацию этого!
Это был ответ, который я искал, потому что я не хотел помещать учетную запись AD в пул приложений, но я не мог заставить это работать. Вы пробовали что-нибудь еще, что было связано с разрешением Apppool, например, я пытался перезапустить сервер отчетов.
Я согласен, что это намного лучшее решение, потому что оно работает с текущей конфигурацией IIS, а не изменяет безопасность сайта. ApplicationPoolIdentity обеспечивает более детальный контроль (т. Е. Каждый сайт может получить доступ только к тем базам данных, которые ему необходимы). Спасибо, Михал.
26

учетной записи, в то время как мой пул приложений для IIS был настроен на ApplicationPoolIdentity. Я изменил свой пул приложений на LocalSystem, и он исправил это. Надеюсь, эта информация будет полезна для других, так как я потратил несколько часов, чтобы понять это.

Спасибо, что нашли время и поделились своим ответом! Не забудьте пометить его как принятый ответ!
Не опасно ли запускать пул приложений под системной учетной записью?
Для разъяснения для тех, кому нужна эта информация: Пулы приложений & gt; [YourApp] & gt; Установить значения по умолчанию для пула приложений & gt; В разделе «Модель процесса» измените идентификатор на «LocalSystem».
Я обнаружил, что разрешения на сервере отчетов предоставляли весь ящик {имя_хоста} $, а разрешения были возвращены для идентификации пула приложений. Спасибо!
Я использовал его в защищенной сети, не подвергая его воздействию внешнего мира. Так что в моем случае безопасность не была большой проблемой.
2

так как считаю, что это плохая практика.

Рекомендации Microsoft (не используйте LocalSystem, используйте ApplicationPoolIdentity), см. Здесь: https://technet.microsoft.com/en-us/library/jj635855.aspx#AppPools.

Для обоснования смотрите здесь: https://stackoverflow.com/a/510225/44169

Я испытывал ошибку, описанную. Я добавил удостоверение пула приложений в разрешения для папки сервера отчетов, но это переопределялось настройками безопасности подпапки. Я исправил это, выбрав подпапку и нажав «Вернуться к настройкам родительской безопасности».

0

ApplicationPoolIdentity КLocalSystem и это будет исправлено.

По умолчаниюApplicationPoolIdentity DO NOT have access to Report Service i.e. SSRS reports

Если вы не изменили учетную запись Identity для своего приложения, то при запуске отчета в приложении будет использоваться учетная запись Identity по умолчанию & # x201C; ApplicationPoolIdentity & # x201D; для доступа к серверу отчетов.By default, the default do not have the permission to access report server. Так что в вашем сценарии эта ошибка связана с учетной записью удостоверения по умолчанию & # x201C; ApplicationPoolIdentity & # x201D; в пуле приложений не имеет разрешения для доступа к серверу отчетов.

Для получения дополнительной информации ссылка:

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/9593f5a8-09e7-4299-9cf1-5251dd375c38/the-permissions-granted-to-user-iis-apppoolaspnet-v40-are-insufficient- для-исполнительской-это? форум = sqlreportingservices

3

создайте пользователя AppPool в качестве роли браузера. Часть, которая отсутствует

The name of the user (at least on Windows 2012 is 'IIS APPPOOL\pool name' This is the exact name that will appear on the error page. Do not put the quotes around the user name when entered in the permission dialog. The browser role must be created at the main folder. Of course, if you need the permission at a sub-folder, ensure that the sub-folder is still inheriting permissions or set it manually

Похожие вопросы