Tôi gặp lỗi "Yêu cầu không thành công với trạng thái HTTP 401: Không được ủy quyền" bất cứ khi nào tôi cố liệt kê các báo cáo trên máy chủ báo cáo của mình. Điều kỳ lạ là, nó hoạt động khi tôi chạy ứng dụng asp.net trên máy dev của tôi đánh máy chủ dịch vụ báo cáo dịch vụ web url (http://www.example.com/reports/reportservice2005.asmx?wsdl) nhưng khi ứng dụng asp.net được cài đặt trên máy chủ (chạy iis 7) đánh cùng url Tôi nhận được lỗi. Dưới đây là tôi thiết lập:Dịch vụ báo cáo 2008: "Trạng thái HTTP 401: Không được phép" Số phát hành
Server:
SQL Server dịch vụ Báo cáo năm 2008 (không R2)
dịch vụ Web url: http://www.example.com/reports/reportservice2005.asmx?wsdl
Khách hàng
Tạo một proxy ReportingServices2005.cs
Web.config có
Mã niêm yết báo cáo:
<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>
Mã Đằng sau:
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();
}
}
'objRS' ở đây là gì? –