5

Ich habe SSRS auf meinem localhost eingerichtet und verwendet BIDS, um ein paar Berichte über sie zu erstellen. Sie greifen auf Daten von demselben SQL Server zu, auf dem der SSRS bereitgestellt wird, und wenn ich sie in der Vorschau anzeigen lasse, laufen sie einwandfrei. Dann habe ich sie auf meinem SSHRS von localhost deployed und über die Weboberfläche von ReportManager darauf zugegriffen. Schließlich habe ich sie auf dem SSRS meines Hosting-Providers bereitgestellt. Gleicher Deal; gute Datenverbindung und es sieht gut aus im ReportManager.Verwenden von SSRS mit ASP.Net ReportViewer

Wenn ich sie zum ersten Mal über den ReportManager auf einem der beiden Systeme zugreife, muss ich meinen Benutzernamen und mein Passwort eingeben, was auf meinem Laptop nur meine Anmeldung und mein Passwort ist. Für meinen Hosting-Provider ist es meine Kontoanmeldung für sie.

Mein Problem ist, wenn ich versuche, einen Bericht mit dem ReportViewer-Steuerelement in ASP.Net anzuzeigen. Sehr oft, wenn es versucht zu rendern, bekomme ich eine "Bad Logon" oder "401: Unauthorized" statt meines Berichts. Nach langem Lesen und Nachdenken glaube ich, dass ich mich nicht beim SQL Server anmelden muss, sondern bei der Website (Webdienst?), In der meine Berichte veröffentlicht werden. Wenn ich jetzt keine Zugangsdaten zur Verfügung stelle, kann ich meine lokalen Berichte (normalerweise) im ReportViewer abrufen. Wenn ich die Berichte jedoch auf einem Remote-Server bereitstellen, funktioniert das nicht mehr.

Nach einigen Nachforschungen habe ich eine Klasse erstellt, die IReportServerCredentials implementiert und versucht, den Benutzernamen und das Kennwort zu verwenden, aber das scheint nicht zu funktionieren. Und es hat mich verwirrt, ob diese Anmeldeinformationen für die Datenquelle oder für den Webdienst sein sollen.

Wenn mir jemand sagen könnte, wie man den ReportViewer dazu bringt, sich beim SSRS-Webservice anzumelden, würde ich es sehr begrüßen.

Antwort

4

Angenommen, Sie haben den Verarbeitungsmodus = "Remote" -Attribut auf den Viewer gesetzt, dann haben Sie wahrscheinlich ein Authentifizierungsproblem. Wenn Sie den Report Viewer im Remote-Modus verwenden, wird der Bericht auf SSRS von dem Konto ausgeführt, unter dem ASP.Net läuft. Dieses Konto muss Zugriff auf den Berichtsserver und auf den Bericht haben, den Sie ausführen möchten. Wahrscheinlich wird ASP.Net unter einem Konto ausgeführt, das keinen Zugriff auf SSRS hat.

Wenn Sie die Anmeldeinformationen für die Berichtsanzeige festlegen möchten, finden Sie unter this thread eine Lösung und einen Beispielcode.

+0

Tatsächlich habe ich einen Fehler bekommen, als ich an einem anderen Staging-Ort deployed habe, dass das NT-Konto, das ich benutzt habe, nicht die Rechte hatte, um diese Aktion durchzuführen. Das Verständnis für den Identitätswechsel und das Konto, unter dem meine Anwendungen laufen, muss ich stärker berücksichtigen. Am Ende konnte ich dieses Ding jetzt ausführen, indem ich eine Rolle für "BUILTIN \ Users" von "Browser" hinzufügte. Es funktioniert, aber ich bin nicht verrückt danach, weil ich denke, dass es im Grunde bedeutet, dass der Bericht jetzt überhaupt nicht gesperrt ist. Ich werde weiterhin die Antworten verfolgen, die ich hier bekomme. –

+0

Am Ende habe ich es schließlich herausgefunden, indem ich die von mir erstellte Berechtigungsnachweisklasse genauer untersucht habe und sie mit Beispielcode verglichen habe, von dem ich wusste, dass er funktioniert. Es stellte sich heraus, dass ich "True" von meiner GetFormsCredentials() -Methode zurückgab. Da ich nie die Formularauthentifizierung verwenden wollte, hätte ich "False" zurückgegeben."Alle" out "-Parameter für diese Methode wurden auf NULL gesetzt, so dass die Authentifizierung nie richtig durchgeführt wurde, und ich habe es nicht bemerkt. –

+0

Awesome. Wir stießen auf die gleichen Probleme, als wir versuchten, SSRS mit unseren zu integrieren Am Ende waren wir in der Lage, die Berechtigungen genau richtig zu bekommen, aber es war schmerzhaft. – jvilalta

1

Es ist immer schwierig, Authentifizierungsprobleme remote zu beheben, aber Sie können Ihr Problem möglicherweise lösen, indem Sie den Identitätswechsel auf Ihrem AppPool aktivieren. Auf diese Weise ist IIS in der Lage, eine Verbindung zu SQL Server als Benutzer herzustellen, wenn ein Benutzer angemeldet ist.

Ein anderer Ansatz könnte die Verwendung der SQL-Authentifizierung sein; leider hängt die details davon ab, wie sie dinge angeschlossen haben.

+0

Ich würde definitiv SQL-Authentifizierung bevorzugen; hauptsächlich, weil ich nie verstanden habe, wie die Windows-Authentifizierung das tut, was sie tut. Und da auf Web-Apps keine Netzwerkanmeldung stattfindet. Ich werde mich über den Identitätswechsel informieren. –

Verwandte Themen