2010-09-28 16 views
9

Raporlama sunucumdaki raporları listelemeye çalıştığımda "İstek HTTP durumu 401: Yetkisiz olarak başarısız" hatasını alıyorum. Garip olan şey, benim sunucuya servis raporlama hizmeti web servis url'sine (http://www.example.com/reports/reportservice2005.asmx?wsdl) isabet eden asp.net uygulamasında çalıştırdığımda ama asp.net uygulaması sunucuya yüklendiğinde (iis 7 çalıştıran) aynı url hatası alıyorum. İşte benim kurulumu yapıldıktan:Raporlama Hizmetleri 2008: "HTTP durumu 401: Yetkisiz" Sorun

Sunucu:

SQL Server Raporlama Hizmetleri 2008 (değil R2)

Web hizmeti url: http://www.example.com/reports/reportservice2005.asmx?wsdl

Müşteri

düzenlendi proxy ReportingServices2005.cs

Web.config dosyasının adı

'dir.

Kod raporlarını listelemek için: Arkasında

<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> 

Kodu: sayısız forumlar ve makaleler google'da birkaç saat sonra

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

Burada 'objRS' nedir? –

cevap

13

, Windows Server bir güvenlik özelliğidir geri döngü "olarak adlandırılan bulundu "(http://support.microsoft.com/kb/926642) sorununa neden oldu. Bu, aynı makinede hem rapor sunucum hem de IIS sunucum var ve raporlara erişmek için tam etki alanı adını (FQDN: http://www.example.com/reportserver) kullanıyordu çünkü oldu. Bunu, alan adı yerine yerine sunucunun adını kullanarak çözdüm. Umarım bu birisine yardım eder.

2

Bugün çalıştığımı kontrol etmek için başka bir şey - kullanıcının Windows hesabının kilitli olmadığını kontrol ettiğinizden emin olun. Bu, 401 not authorized dönmek için /reportserver isteklerine neden olur.

İlgili konular