2010-09-28 22 views
9

Otrzymuję komunikat "Żądanie nie powiodło się ze stanem HTTP 401: Nieautoryzowane", gdy próbuję wyświetlić listę raportów na moim serwerze raportowania. Dziwne jest to, że działa po uruchomieniu aplikacji asp.net na mojej maszynie deweloperskiej, trafiającej na serwer usługi raportowania usług serwerowych (http://www.example.com/reports/reportservice2005.asmx?wsdl), ale gdy aplikacja asp.net jest zainstalowana na serwerze (z uruchomioną wersją iis 7) trafia w ten sam adres URL Otrzymuję błąd. Oto mój skonfigurować:Reporting Services 2008: "Status HTTP 401: Nieautoryzowany" Wydanie

serwera:

SQL Server Reporting Services 2008 (nie R2)

usług Web URL: http://www.example.com/reports/reportservice2005.asmx?wsdl

Client

stworzył ReportingServices2005.cs proxy

Web.config ma

Kod do listy raportów:

<asp:ListView ID="lvReportList" runat="server"> 
<LayoutTemplate> 
    <ul> 
     <asp:PlaceHolder runat="server" ID="itemPlaceholder"></asp:PlaceHolder> 
    </ul> 
</LayoutTemplate> 
<ItemTemplate> 
    <li> 
     <asp:HyperLink runat="server" ID="hpReportLink" NavigateUrl='<%#Eval("Url")%>'><%#Eval("Name")%></asp:HyperLink> 
    </li> 
</ItemTemplate> 
<EmptyDataTemplate> 
    <div> 
     No reports to display. 
    </div> 
</EmptyDataTemplate> 

Code Behind:

protected void Page_Load(object sender, EventArgs e) 
{ 
if (!Page.IsPostBack) 
{ 
    string rWebServiceUrl = ConfigurationManager.AppSettings["RSWebserviceUrl"]; 
    string reportServerFolder = ConfigurationManager.AppSettings["ReportServerFolder"]; 
    string domain = ConfigurationManager.AppSettings["RSDomain"]; 
    string userName = ConfigurationManager.AppSettings["RSUsername"]; 
    string password = ConfigurationManager.AppSettings["RSPassword"]; 

    objRS.Url = rWebServiceUrl; 
    objRS.Credentials = new NetworkCredential(userName, password, domain); 

    ReportingServices2005.CatalogItem[] items = objRS.ListChildren(reportServerFolder, false); 

    var reportList = from p in items 
        select new 
        { 
         Name = p.Name, 
         Url = String.Format("{0}?reportPath={1}/{2}", ReportViewerUrl, reportServerFolder, p.Name) 
        }; 

    lvReportList.DataSource = reportList; 
    lvReportList.DataBind(); 

} 
} 
+1

Co to jest "objRS"? –

Odpowiedz

13

Po kilku godzinach Googling liczne fora i artykuły, stwierdziliśmy, że funkcja zabezpieczeń w Windows Server o nazwie „loopback check "(http://support.microsoft.com/kb/926642) było przyczyną problemu. Stało się tak, ponieważ mam serwer raportów i serwer IIS na tym samym komputerze i korzystałem z w pełni kwalifikowanej nazwy domeny (FQDN: http://www.example.com/reportserver), aby uzyskać dostęp do raportów. Rozwiązałem to po prostu używając nazwy serwera zamiast nazwy domeny tj. . Mam nadzieję, że to pomoże komuś.

2

Coś jeszcze, aby sprawdzić, że dziś wpadłem - upewnij się, że konto Windows użytkownika nie jest zablokowane. Spowoduje to, że żądania do /reportserver zwrócą 401 not authorized.

Powiązane problemy