У меня есть модуль рендеринга для служб отчетов, который использует службу ReportExecution2005.asmx для выполнения ряда «подотчетов», а затем помещает результаты в представление PowerPoint.
Типичным сценарием использования является переход к диспетчеру отчетов, выберите мой отчет «Powerpoint», который используется только в качестве заполнителя для параметров, передаваемых в «подотчеты». Затем я выбираю свое расширение из списка форматов экспорта и нажимаю Экспорт, который запускает расширение и возвращает мне мой файл pptx.
Это прекрасно работает как на наших живых, так и на тестовых серверах. Но я столкнулся с очень странной проблемой, пытаясь настроить другой тестовый сервер.
Любой вызов, сделанный добавочным номером веб-службы, возвращается с «401 Отказано в доступе» (дополнительная информация о субстатусе отсутствует).
Вещи, которые я пытался без успеха:
- разрешить всем физический доступ к структуре папок виртуального каталога ReportServer. И я имею в виду буквально всех - ASPNET, NETWORK SERVICE, Все, учетную запись, которую я обычно использую для входа в систему, которая является администратором и владельцем папки
- использовать диспетчер отчетов для настройки безопасности на стороне служб отчетов. Опять же, каждая мыслимая учетная запись пользователя / группы, которая может быть задействована, получила каждую мыслимую роль.
- разрешить анонимный доступ к веб-приложению ReportServer.
- включено олицетворение в веб-приложении ReportServer.
- жестко закодированные учетные данные пользователя для использования при вызове веб-службы (по умолчанию он просто использует System.Net.CredentialCache.DefaultCredentials)
Я также создал небольшой тестовый веб-сайт, который использует службу ReportExecution точно так же, как RenderingExtension, и с веб-сайта веб-сервер хорошо аутентифицируется и позволяет мне вызывать веб-службу, поэтому, очевидно, проблема лежат с самой настройкой безопасности веб-службы.
Начинаю вырывать мои волосы. В крайнем случае, я собираюсь переустановить службы Reporting Services, но в то же время (или если это не поможет) - если кто-то сталкивался с чем-то похожим, я был бы очень признателен за любой вклад.