2016-02-15 5 views
3

Я пытаюсь создать pdf-файл из отчета SSRS, используя URL-адрес в C#. (В бизнес-слой за контроллером WebAPI) Я создаю экземпляр HTTPClient, назначить правильные учетные данные и форму запроса URL, как:401 Несанкционированная ошибка в доступе к URL SSRS ... но она работает в Fiddler?

http://sqlserver1/ReportServer/Pages/ReportViewer.aspx?/Clients/Acme/AcmeActivitySummary&rs:Command=Render&rs:format=pdf&Region=west&CutOffDate=10/25/2015

Если я кладу URL в браузере , он загружает ожидаемый файл PDF. Когда я запускаю этот URL-адрес из экземпляра HttpClient для возврата потока, я получаю несанкционированную ошибку 401.

Если я открою Скрипач, чтобы понять, почему ... он работает должным образом.

Как сделать эту работу без использования Fiddler ... и почему она не работает сейчас?

ответ

2

Где-то по линиям Microsoft изменил «стандарт» для доступа к URL-адресам SSRS. Шаблон URL "http://{Server}/ReportServer/Pages/ReportViewer.aspx?/{Path to Report File} & [commands] & [parameters]

осуждался в пользу

http://{server}/reportserver?/{path} & [commands] & [parameters].

ОДНАКО ... старый шаблон URL будет еще работать" иногда. SSRS будут по-прежнему получать запрос на старой «конечной точки», и если запрос может быть переадресован, он сделает это. Таким образом, «нормальный» запрос из браузера (или из Fiddler), похоже, работает очень хорошо. Проблема заключается в запросе HttpClient, который SSRS будет не переходить к новой конечной точке ... и это просто возвращает [несколько запутывающее] 401 Несанкционированное исключение ... что, по-видимому, означает «Я не уполномочен пересылать этот запрос», а не «у вас нет доступа к этому ресурсу».

(после потери больше времени, чем я хочу признать, что это ... Я думал, что сообщение здесь будет полезно для других.)