我有一个连接到SQL Server 2008 R2中的Reporting Services的应用程序。
错误如下:
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个不同的客户中正常运行,因此这不是代码问题。
我正在尝试将其安装在使用AD的客户服务器上。虽然SQL Server和IIS都在同一台机器上,所以我并不关心AD。
如果我以管理员身份运行IE,它会运行,但它不能与其他用户一起使用。 ASP.NET应用程序使用在本地计算机(称为 ReportingServicesUser )中创建的用户(ReportingServicesUser组的成员)连接到SSRS。
我尝试过的事情:
http://localhost
,http://computername
和http://domain.com
供参考,代码是这个(简化版):
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
我已经阅读了很多关于此的帖子和页面,但我无法得到适合我的答案。
答案 0 :(得分:2)
好的,我最后不得不将代码更改为:
rs.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
它有效。可能还有另一个解决方案,但我找不到它。
答案 1 :(得分:0)
您确定在ssrs中为特定报告提供了“ReportingServicesUser”浏览权限吗?请求从未进入服务器,但我会检查\ Reporting Services \ LogFiles只是为了确定。
此外,您的“报告用户”用户需要使用您发送的凭据在报告服务器上进行定义。