Невозможно перечислить отчеты из служб Reporting Services через страницу asp.net с помощью DefaultCredentials - PullRequest
0 голосов
/ 07 апреля 2011

---------- Фон ------------------
В настоящее время я пытаюсь создать веб-интерфейс в нашей интрасети для наших сотрудников. Я хотел бы построить что-то подобное лжи этого , где они смогут для доступа к отчетам, к которым у них есть доступ, и к некоторым приложениям, к которым мы работают над созданием, которое управляет различными процессами на основе отделов.

У нас есть сервер приложений и сервер служб отчетов (SQL 2008).

---------- Что я сделал до сих пор --------------------

Я добавил веб-ссылку на http://prodrpt/ReportServer/reportservice2005.asmx и я могу одновременно просматривать список служб и получать к ним доступ через Internet Explorer (при переходе непосредственно к ним)

Web Config использует Режим аутентификации: Windows Идентификационная личность = истинная

-------------- Проблема -------------------------------- -

Проблема возникает, когда я пытаюсь передать учетные данные пользователя, как это

 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim res As String = "---"

    Dim rs As New ReportingService2005()

    rs.Credentials = System.Net.CredentialCache.DefaultCredentials
    Dim items As New prodrpt.CatalogItem()

    For Each item In rs.ListChildren("/", True)
        res = res + item.Name + " | " + item.Path + " | " + item.Type.ToString + "<br />"
    Next
    Response.Write(res)

    cont.InnerHtml = res
End Sub

Возвращает эту ошибку

Запрос не выполнен с состоянием HTTP 401: не авторизован.

Line 925:        [return: System.Xml.Serialization.XmlArrayAttribute("CatalogItems")]
Line 926:        public CatalogItem[] ListChildren(string Item, bool Recursive) {
Line 927:            object[] results = this.Invoke("ListChildren", new object[] {
Line 928:                        Item,
Line 929:                        Recursive});


[WebException: The request failed with HTTP status 401: Unauthorized.]
   System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall) +412782
   System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) +300
   prodrpt.ReportingService2005.ListChildren(String Item, Boolean Recursive) in c:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\root\e22c2559\92c7e946\App_WebReferences.nrvcuhh0.1.cs:927
   apps_Payroll_Main.Page_Load(Object sender, EventArgs e) in C:\inetpub\wwwroot\apps\Payroll\Main.aspx.vb:16
   System.Web.UI.Control.OnLoad(EventArgs e) +132
   System.Web.UI.Control.LoadRecursive() +66
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2428

Если я заменю rs.Credentials = System.Net.CredentialCache.DefaultCredentials

С

rs.Credentials = Новый System.Net.NetworkCredential («имя пользователя», «пароль»)

Передавая мои учетные данные напрямую, это работает, но я хочу, чтобы они автоматически выбирали учетные данные.

Я также заметил, что если я ввожу свои учетные данные, такие как «ДОМЕН \ имя пользователя», произойдет сбой, но если я просто введу «имя пользователя» без домена, это сработает.

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

Спасибо.

1 Ответ

1 голос
/ 07 апреля 2011

Получаете ли вы несанкционированное сообщение, если вы запускаете свой сайт в IIS? Работает ли это при запуске приложения на встроенном сервере разработки? Если вы получаете сообщение об ошибке только в IIS, я полагаю, вам нужно установить идентификатор пула приложений для пользователя домена, который имеет права на доступ к веб-службе.

...