открыть отчет ssrs в формате Excel через «нормальный» URL с возвратом через веб-запрос 401 - PullRequest
1 голос
/ 17 марта 2011

Я хочу скачать отчет ssrs в формате Excel в коде.

Итак, я сначала проверил URL: это правильно затем я создал веб-запрос с NetworkCredential для того же пользователя, который может открыть ссылку в браузере.

Я переместил разработку на саму машину ssrs (на ней vs2008)

так что теперь я нахожусь на машине ssrs, вошел в систему как пользователь A, запустил веб-страницу, создал веб-запрос с теми же учетными данными, что и в данный момент, когда я вошел на машину ssrs (пользователь A) .... и получите 401.

Чего я не знаю, так это того, что дает мне 401. Это веб-сервер, который мне отказывает, или это сам ssrs (я новичок в ssrs, поэтому я не очень разбираюсь в правах на отчеты в ssrs сам, но, как я уже сказал: мои учетные данные для входа в систему совпадают с учетными данными веб-запроса: пользователь A).

Я много гуглил и пробовал 5 решений, но пока не повезло.

Ответы [ 4 ]

3 голосов
/ 23 марта 2011

Это не будет работать, если требуются учетные данные NTLM:

webrequest.Credential = new networkcredential ("","","");

Вы можете попробовать следующее, но, скорее всего, это не сработает:

webrequest.Credentials = CredentialCache.DefaultNetworkCredentials;

Скорее всего, вам понадобитсяпередайте действительные учетные данные, такие как:

NetworkCredential networkCredential = new NetworkCredential(UserName, Password, Domain);
CredentialCache credCache = new CredentialCache();
credCache.Add(new Uri(url), "NTLM", networkCredential);
webrequest.Credentials = credCache;

SSRS потребуется аутентифицировать WebRequest, и учетные данные по умолчанию / пустые не могут быть переданы.

2 голосов
/ 18 марта 2011

Это напомнило мне кое-что, с чем я столкнулся пару лет назад: http://support.microsoft.com/kb/896861

Я не уверен, насколько вероятна эта проблема, но я действительно думаю, что стоит реализовать «Метод 2» из этой статьи поддержки (простое добавление в реестр), чтобы посмотреть, решит ли это проблему. (Да, в этой статье перечислены несколько старых версий ОС, но я успешно использовал их на нескольких серверах SharePoint 2007 для решения проблем.)

Стоит попробовать, я думаю ...

1 голос
/ 28 марта 2011

Сначала я предлагаю установить Fiddler Web Debugger на машине, где запущено вызывающее приложение.Таким образом, вы можете точно видеть запросы и ответы, которые делаются между вашим приложением и SSRS.Вы можете найти что-то вроде прокси-сервера ISA, требующего дополнительной аутентификации на нем.

Предполагая, что вызывающая сторона - приложение консоли или WebForms, следующий код передает учетные данные, под которыми ваше приложение запускается, на SSRS:

        WebRequest webRequest = WebRequest.Create(url);
        HttpWebRequest httpWebRequest = webRequest as HttpWebRequest;

        // request authentication
        httpWebRequest.UseDefaultCredentials = true;
        // which is the same as
        httpWebRequest.Credentials = CredentialCache.DefaultCredentials;

        // optional proxy authentication
        httpWebRequest.Proxy.Credentials = CredentialCache.DefaultCredentials;
1 голос
/ 23 марта 2011

Я всегда выставляю

WebRequest.UseDefaultCredentials = True

Затем я запускаю приложение как пользователь, обращающийся к серверу SSRS.

...