Hier ist der Code, den ich verwende, um Bericht von einem SSRS-Server im PDF-Format anzuzeigen.Anstatt Bericht von SSRS-Server in PDF anzuzeigen, zeigt der Browser die unbearbeitete Antwort vom Webserver an
var reportServerUrl = new Uri(string.Format("{0}?{1}{2}&rs:aCommand=Render&rs:Format=pdf",
ConfigurationManager.AppSettings("ReportServerURL"),
ConfigurationManager.AppSettings("ReportFolder"), ItemPath));
var wcli = new WebClient();
wcli.Credentials = CustomReportCredentials.WebClientCredentials;
var fileBuffer = wcli.DownloadData(reportServerUrl);
if (fileBuffer != null)
{
Response.ContentType = "application/pdf";
Response.AddHeader("content-length", fileBuffer.Length.ToString());
Response.BinaryWrite(fileBuffer);
}
Es funktioniert die meiste Zeit. Aber manchmal, wenn ich auf einen Link klicke, bekomme ich, anstatt einen Bericht im PDF-Format zu bekommen, seltsame Ergebnisse, abhängig vom Browser. In CHROME erhalte ich den Quellcode der Seite. Im IE erhalte ich die rohe Antwort + einige wichtige Zeichen (siehe Bild). Dann läuft die Seite ab.
Ehrlich, ich habe keine Ahnung, warum dies geschieht.
Danke für Ihre Hilfe.
Dies wird normalerweise durch eine Doctype-Einstellung auf dem Server verursacht, wobei der Server nicht weiß, welche Art von Daten er sendet, so dass er Text annimmt. Sie sagen nicht, welchen Webserver Sie verwenden, daher kann ich keine spezifische Lösung vorschlagen. – Duston
Ich verwende die Internetinformationsdienste 8. Die Nebenfrage wäre, warum das Problem nur jedes andere Mal auftritt, d. H. Ich klicke auf den Link, es zeigt den Bericht in PDF an. Das nächste Mal bekomme ich den Fehler. Das nächste Mal zeigt es den Bericht perfekt an, dann erhalte ich den Fehler. Ich bin verloren. – Richard77
Sie tun dies auf Knopfdruck? Ich würde einen Handler erstellen und dann einen Hyperlink verwenden, um die Datei herunterzuladen. wahrscheinlich würde Anhang auf Content-Disposition plus einen Dateinamen, report.pdf oder ähnliches setzen. –