当我使用 asmx 服务和 s-s-rS 报告服务时,我收到“请求失败,http 状态 401:未授权”

Posted

技术标签:

【中文标题】当我使用 asmx 服务和 s-s-rS 报告服务时,我收到“请求失败,http 状态 401:未授权”【英文标题】:when I use asmx service and s-s-rS report service I am getting "The request failed with http status 401: unauthorised" 【发布时间】:2020-03-17 13:56:45 【问题描述】:

我试图通过在本地运行从我的 asp.net Web 应用程序调用报告相关服务 (asmx)。 然后发生了一个异常说。 The request failed with http status401:unauthorised.

在我的分析中,我理解了由以下代码引起的问题

s-s-rSWebService.ReportingService2005 rs = new s-s-rSWebService.ReportingService2005();
rs.Credentials = new MyReportServerCredentials().NetworkCredentials;

Uri reportUri = new Uri(ConfigurationManager.AppSettings["ReportServerManagement.ReportingService2005"]);
this.rptViewer.ServerReport.ReportServerCredentials = new MyReportServerCredentials();

【问题讨论】:

【参考方案1】:

在我的详细分析中,我了解到问题是因为 serviceObject.credentialServerReport.ReportServerCredentials 中设置的凭据有误。这可以通过两种不同的方式来纠正,方法是使用以下代码将凭据设置为默认值

rs.Credentials = System.Net.CredentialCache.DefaultCredentials;//"rs" is report object

或者找到下面的代码并在代码中设置正确的经过身份验证的用户凭据

 public WindowsIdentity ImpersonationUser

    get
    
        // Use the default Windows user.  Credentials will be
        // provided by the NetworkCredentials property.
        return null;
    


public ICredentials NetworkCredentials

    get
    
        // Read the user information from the Web.config file.  
        // By reading the information on demand instead of 
        // storing it, the credentials will not be stored in 
        // session, reducing the vulnerable surface area to the
        // Web.config file, which can be secured with an ACL.

        // User name
        string userName =
            <<AccurateUserName;>>


        // Password
        string password =
            <<AccuratePassword;>>

        // Domain
        string domain = <<AccurateDomainName;>>


        return new NetworkCredential(userName, password, domain);
    

为了检查哪个用户有访问权限,我们需要在网络浏览器中输入以 asmx 结尾的服务 url (http:/MyServiceHostedServer/MyService.asmx)。它将提示用户名和密码。提供我们的用户名:Domain\Username 和密码。如果我们能够看到 wsdl xml 文件,则该用户具有访问权限。

【讨论】:

以上是关于当我使用 asmx 服务和 s-s-rS 报告服务时,我收到“请求失败,http 状态 401:未授权”的主要内容,如果未能解决你的问题,请参考以下文章

s-s-rs 报告在服务器和本地上的工作方式不同

SQL 服务报告服务帐户

报告服务 (s-s-rS):报告页脚在导出到 excel 时不起作用

s-s-rS 2008 - reportservices.asmx 与旧版应用程序不兼容

在报告服务器中运行报告时出现 s-s-rS 错误

s-s-rs 2008 列宽在运行和 pdf 时发生变化