wake-up-neo.com

Die Anforderung ist mit dem HTTP-Status 401 fehlgeschlagen: Nicht autorisiert IN SSRS

Meine Anwendung ist in Asp.Net MVC3 in C# codiert. Ich habe eine SSRS-Lösung in SQL Server Business Intelligence Developement Studio in Visual Studio 2008. Ich rufe den SSRS-Bericht über meine Asp.Net MVC3 -Anwendung auf. Meine Anwendung lief vor ein paar Tagen gut, aber plötzlich bekomme ich einen Fehler wie folgt:

Mein Fehler:

The request failed with HTTP status 401: Unauthorized.

Meine Versuche

  1. Meine SSRS-Berichte werden auf meinem local server bereitgestellt. Ich habe meinen Berechtigungsnachweis ordnungsgemäß in der Datenquelle meiner SSRS-Berichtslösung festgelegt.

  2. Ich habe versucht, das Tag in meiner web.config <identity impersonate="true" userName="Domain\username" password="Password" /> hinzuzufügen.

  3. Ich habe versucht, IReportServerCredentials reportCredentials = new ReportServerCredentials("MyUserName", "MyPassword", "ServerName"); hinzuzufügen. 

  4. Ich habe das Visual Studio als 'Run as Administrator' ausgeführt.

  5. Ich habe die in diesem Link erwähnte Lösung ausprobiert Erstellen eines Schlüssels mit RegEdit

  6. Update Ich habe auch folgende Lösung ausprobiert, aber das gleiche Ergebnis: Nicht autorisierter Fehler in SSRS

Keine der oben genannten Lösungen hat funktioniert, aber wenn ich dieselbe Lösung auf einem anderen Rechner als den Lösungen ausführe, funktioniert das gut und es wird kein Fehler angezeigt. Es ist nur, wenn ich die Lösung von meinem Computer aus laufe, dann erhalte ich die Fehlermeldung The request failed with HTTP status 401: Unauthorized.

8
Sam M

Ich bekomme auch den gleichen Fehler, 

The request failed with HTTP status 401: Unauthorized.

Lassen Sie mich mitteilen, was ich ausprobiert habe und es funktioniert jetzt gut.

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;
        }
    }

In page_load event,

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();
}

Das hat bei mir funktioniert!

3
pedram

Versuche dies

public void GetConnectionOfReportServer()
        {
            try
            {
                NetworkCredential credential = new NetworkCredential("administrator", "[email protected]", "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);
            }


        }
2
vikky

die Anforderung ist mit dem HTTP-Status 401 nicht autorisiert. ssrs 2008

von web.config add key = "RS_UName" value = "rajiv-pc" ---- falsch

ersetzen Sie den obigen Wert durch Ihren Systemnamen (Rajiv), nicht den SQL-Servernamen wie Rajiv-PC

es gibt immer einen Systemnamen und keinen SQL Server-Namen.

von web.config add key = "RS_UName" value = "rajiv" --- richtig

0
user2959497

die Antwort von curiousguy löste mein Problem. Danke, Mann!

Überprüfen Sie auch Ihre web.config. Es muss folgendes haben:

`

<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>

`

Das öffentliche Token muss dasselbe sein, andernfalls wird ein anderer Fehler ausgelöst. 

0
Hadrian

Ich hatte das gleiche Problem. Alles hat gut funktioniert und dann bekomme ich plötzlich einen 401 im iframe von reportviewer anstatt meines Berichts im Debug-Modus (localhost). Ich hatte mit Einstellungen herumgespielt, um es auf der Live-Site zum Laufen zu bringen, also dachte ich, ich hätte etwas falsch gemacht ...

Versuchte mehrere Dinge und beschloss dann, einfach neu zu starten und zu raten, was ??? Mein Domänenkennwort war abgelaufen, daher ist die Authentifizierung fehlgeschlagen !!! Dumm blöd dumm mich!

Ich dachte, ich würde meine Lösung hier hinzufügen, falls die Leute in die gleiche dumme Situation geraten und wertvolle Zeit verlieren, um herauszufinden, was sie falsch gemacht haben ...

0
Caty Hespel