我有一個連接到SQL Server 2008 R2中的Reporting Services的應用程序。Reporting Services 2008 - 401:未授權
的錯誤是:
System.Net.WebException: The request failed with HTTP status 401: Unauthorized.
at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse
(SoapClientMessage message, WebResponse response, Stream responseStream,
Boolean asyncCall)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke
(String methodName, Object[] parameters)
at Microsoft.SqlServer.ReportingServices2005.Execution.ReportExecutionService.LoadReport
(String Report, String HistoryID)
應用在生產中運行的罰款在2個不同的客戶,所以它不是一個codeing問題。
我正試圖在客戶的服務器上使用AD進行安裝。儘管SQL Server和IIS都在同一臺機器上,所以我並不關心AD。
它運行時,如果我以管理員身份運行IE,但它不適用於其他用戶。 ASP.NET應用程序使用在本地計算機中創建的用戶(稱爲ReportingServicesUser)成爲ReportingServicesUser組的成員,從而連接到SSRS。
事情我已經嘗試:
- 在RS網站添加ReportingServicesUser站點設置(也做了同樣的網絡服務,IUSR,Authenticated Users組,本地服務等)
- 添加ReportingServicesUser在RS網站上的文件夾權限(也做了同樣的網絡服務,IUSR,Authenticated Users組,本地服務等)
- 一(應用數據庫和RS相關數據庫)
- 向RS文件夾添加了NTFS權限(我將仔細檢查)。
- 連接到使用
http://localhost
,http://computername
和http://domain.com
供參考RS,代碼是這樣的(簡本):
var service = new ReportExecutionService();
service.Credentials = new NetworkCredential("ReportingServicesUser", "password");
service.Url = "http://computername:90/ReportServer/ReportExecution2005.asmx";
service.ExecutionHeaderValue = new ExecutionHeader();
var execInfo = new ExecutionInfo();
execInfo = service.LoadReport("path-to-the-report", null);
===> Here it throws the exception
我讀過很多關於這個的文章和網頁的但我無法得到適合我的答案。
我不會說這是一個解決方案,因爲通常您希望報表服務器執行到除當前窗口標識之外的其他憑證之下(這就是您實質上正在執行的操作)。 –