PDF-Datei mit der WCF Restful-Dienste
Aufgabe: in der Lage sein, um das Rendern einer PDF-Datei, wenn der Benutzer auf einen link klickt (was ist ein WCF Service {Beispiel: http://localhost:6186/MyReportServices.svc/reports/012}). Der Service geht und holt sich den Bericht von SSRS-Server und gibt den Stream. Hier ist das Stück code, dass ist in .
[ServiceBehavior(AddressFilterMode = AddressFilterMode.Any)]
public class AssistReportServices : IAssistReportServices
{
public Stream GetReport(int value)
{
//skipped some lines of code.
try
{
result = rs.Render(format, devInfo, out extension, out encoding, out mimeType, out warnings, out streamIDs);
execInfo = rs.GetExecutionInfo();
}
catch (SoapException err)
{
throw;
}
MemoryStream ms = new MemoryStream();
ms.Write(result, 0, result.Length);
ms.Position = 0;
//WebOperationContext.Current.OutgoingResponse.ContentType = ConfigurationManager.AppSettings["ResponseType"];
WebOperationContext.Current.OutgoingResponse.ContentType = "application/pdf";
return ms;
}
}
Mein Betrieb-Vertrag sieht wie folgt aus:
[OperationContract(Action = "*")]
[WebInvoke(Method = "POST",
UriTemplate = "reports/{value}")]
Stream GetReport(int value);
So weit So gut. Aber hier ist das problem... Wenn ich auf den link oben, bekomme ich die folgende Fehlermeldung in einem Dialogfeld mit dem Titel Adobe Reader und Nachricht:
Datei beginnt nicht mit '%PDF-'.
Fehler Bild: http://i.imgur.com/A4J68.png
Kann ich den Speicher-Stream zu einer Datei und manuelles öffnen der pdf-Datei, und es öffnet sich einfach gut, ohne Probleme.
Dank.
- Die Fehlermeldung sieht aus wie es, mehr von einem problem, dass Acrobat denkt, es ist das öffnen einer Datei mit dem Namen
012
und nicht eine Datei mit dem Namen012.pdf
etc.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand ich, wohin ich gelaufen war. Ich hatte das Web.Config-Datei zu konfigurieren mein WCF-Dienst. Wenn ich eingeschaltet, um eine code-basierte Konfiguration mithilfe des folgenden Codes, der service arbeitete, und wies darauf hin, mein Fehler.
War der Fehler:
Welche ich gelöst, indem der Datentyp für meinen Betrieb Parameter zu einem String.
Dank Mrchief, wie ich seinen Beitrag zu fügen Sie die folgende Codezeile, um mir zu helfen, anzeigen, Speichern/Abbrechen-dialog:-
Wie, schicken Sie es an den browser? Es sieht aus wie seine geschickt mit einem falschen mime-Typ. Es sollte gehen wie
Response.ContentType = "application/pdf";
Content-disposition: attachment; filename=fname.ext