繁体   English   中英

请求失败,HTTP 状态为 401:未授权 IN SSRS

[英]The request failed with HTTP status 401: Unauthorized IN SSRS

我的应用程序在用C#编码的Asp.Net MVC3中,我在Visual Studio 2008 SQL Server Business Intelligence Developement Studio中有一个 SSRS 解决方案,我通过我的Asp.Net MVC3应用程序调用 SSRS 报告。 几天前我的应用程序运行良好,但突然出现如下错误:

我的错误:

The request failed with HTTP status 401: Unauthorized.

我的尝试

  1. 我的 SSRS 报告部署在我的local server 我在 SSRS 报告解决方案的数据源中正确设置了我的凭据。

  2. 我试图在我的 web.config <identity impersonate="true" userName="Domain\\username" password="Password" />添加标签

  3. 我尝试添加IReportServerCredentials reportCredentials = new ReportServerCredentials("MyUserName", "MyPassword", "ServerName");

  4. 我以'Run as Administrator'身份'Run as Administrator' Visual Studio。

  5. 我尝试了此链接中提到的解决方案使用 RegEdit 创建密钥

  6. 更新我也尝试了以下解决方案,但结果相同: SSRS 中的未授权错误

上述解决方案均无效,但是当我在其他机器上运行相同的解决方案时,这些解决方案运行良好且未显示任何错误。 只有当我从我的机器上运行解决方案时,我才会收到错误The request failed with HTTP status 401: Unauthorized.

我也遇到同样的错误,

The request failed with HTTP status 401: Unauthorized.

让我分享我的尝试,现在它运行良好。

public class CustomSSRSCredentials : IReportServerCredentials
    {
        private string _SSRSUserName;
        private string _SSRSPassWord;
        private string _DomainName;

        public CustomSSRSCredentials(string UserName, string PassWord, string DomainName)
        {
            _SSRSUserName = UserName;
            _SSRSPassWord = PassWord;
            _DomainName = DomainName;
        }

        public System.Security.Principal.WindowsIdentity ImpersonationUser
        {
            get { return null; }
        }

        public ICredentials NetworkCredentials
        {
            get { return new NetworkCredential(_SSRSUserName, _SSRSPassWord, _DomainName); }
        }

        public bool GetFormsCredentials(out Cookie authCookie, out string user,
         out string password, out string authority)
        {
            authCookie = null;
            user = password = authority = null;
            return false;
        }
    }

page_load事件中,

if (!Page.IsPostBack)
{
    ReportViewer1.ProcessingMode = ProcessingMode.Remote;
    IReportServerCredentials ssrscredentials = new CustomSSRSCredentials("MyUserName", "MyPassword", "ServerName");
    ServerReport serverReport = ReportViewer1.ServerReport;
    ReportViewer1.ServerReport.ReportServerCredentials = ssrscredentials;
    serverReport.ReportServerUrl = new Uri("ReportPathKey");
    serverReport.ReportPath = "/Reports/MyReport";
    serverReport.Refresh();
}

这对我有用!

我有同样的问题。 一切正常,然后突然我在报告查看器 iframe 中收到一个 401,而不是我在调试模式(本地主机)下的报告。 我一直在摆弄设置以使其在实时站点上运行,所以我认为我做错了什么......

尝试了几件事,然后决定重新启动并猜猜是什么??? 我的域密码已过期,因此身份验证失败!!! 笨笨笨笨笨笨的我!

我想我会在这里添加我的解决方案,以防人们遇到同样愚蠢的情况并浪费宝贵的时间找出他们做错了什么......

试试这个

public void GetConnectionOfReportServer()
        {
            try
            {
                NetworkCredential credential = new NetworkCredential("administrator", "password@123", "Domain");
                this.reportViewer1.ServerReport.ReportServerCredentials.NetworkCredentials = credential;

                //select where the report should be generated with the report viewer control or on the report server using the SSRS service.
                this.reportViewer1.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local;
                this.reportViewer1.ServerReport.ReportServerUrl = new Uri(@"http://localhost/ReportServer");
            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }


        }

我遇到的问题是我的 ReportPath。 我使用的是在浏览器中呈现的 URL,但应该使用来自 ReportServer 数据库的 URL。 要获取路径,请查询 Catalog 表并使用路径字段中的值。

请求失败,http 状态 401 未经授权。 ssrs 2008

从 web.config 添加 key="RS_UName" value="rajiv-pc" ---- 不正确

用您的系统名称(rajiv)替换上面的值,而不是像 rajiv-pc 这样的 sql 服务器名称

总是有系统名称而不是 sql server 名称。

从 web.config 添加 key="RS_UName" value="rajiv" --- 正确

好奇人的回答解决了我的问题。 谢谢男人!

另外,请检查您的 web.config。 它必须具备以下条件:

`

<system.web>
<httpHandlers>
      <add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"
        validate="false" />
    </httpHandlers>
</system.web>
<system.webServer>
<handlers>
      <add name="ReportViewerWebControlHandler" preCondition="integratedMode" verb="*" path="Reserved.ReportViewerWebControl.axd"
       type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, 
          PublicKeyToken=89845dcd8080cc91" />
</handlers>
  </system.webServer>

`

公共令牌必须相同,否则会引发另一个错误。

请检查您指向的网络服务网址。 我在两个单独的服务器上部署了一个 SSRS,一个运行良好,而另一个则抛出了这个错误“请求失败,http 状态 401 未经授权”。

所以几个小时后,我看到我没有指向我的 web.config 上的 web 服务 URL。 web.config 上的示例更改报告服务 URL: http://weburl/ReportServer

这有效!!!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM