Wie, um wieder eine Datei von der web-api-controller?
Ich bin mit einem MVC 5 web-Api-Controller, und ich möchte, um wieder eine Datei:
[Route("")]
public HttpResponseMessage GetFile()
{
var statusCode = HttpStatusCode.OK;
FileStream file = XLGeneration.XLGeneration.getXLFileExigence();
return Request.CreateResponse(statusCode, file);
}
Es dosn ' T Arbeit.
Ausnahme von Postmann:
"ExceptionMessage": "Die 'ObjectContent`1' type Fehler beim serialisieren der Antwort body für content-type 'application/json; charset=utf-8'."
Blick auf die definition der Methode, das zweite argument ist der Wert, den Sie versuchen, zu serialisieren. Also, was er zu tun versucht wird, serialisieren eines
Möglicherweise Verwandte: stackoverflow.com/questions/9541351/...
FileStream
die wahrscheinlich nicht serialisierbar. Versuchen Sie das Lesen der Datei in einen string und verwenden Sie die Zeichenfolge als zweites argument.Möglicherweise Verwandte: stackoverflow.com/questions/9541351/...
InformationsquelleAutor AtefB | 2015-05-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bin ich Entsendung, was für mich gearbeitet, als alternative, falls jemand anderes Probleme hat.
InformationsquelleAutor
Ich zurück byte[] von der WebAPI-controller und die download-PDF-erfolgreich.
Ich bin mit iTextSharp (LGPL) 4.1.6 Kostenlose PDF-Konverter.
Installieren iTextSharp (LGPL /MPL), führen Sie den folgenden Befehl in der Paket-Manager-Konsole.
Install-Paket iTextSharp-LGPL -Version 4.1.6
Server-side-code
Client-Seitigen Code.
InformationsquelleAutor Majid Safeer
Versuchen, diese...
Sollte das eigentlich streamen Sie es als eine Datei.
Ich habe diese code läuft in der Produktion für fast ein Jahr jetzt, der einzige Unterschied ist, ich lese meine Datei-Inhalt in ein array von bytes und die Schaffung eines MemoryStream erstellen, die StreamContent aus. Andere als das, es ist cut und paste von meinem Produktions-code.
Es gibt zwei Möglichkeiten, warum dies möglicherweise nicht für Sie gearbeitet haben. Wenn Ihr XLGeneration.XLGeneration.getXLFileExigence() nicht wirklich zurück ein Strom, oder, wenn Sie nicht ersetzen ", Was auch immer Ihr mit dem Namen ist" mit einem tatsächlichen Dateinamen.
es gibt nur die Namen, aber nicht den stream der Datei
Ich möchte mehr wissen über whta schief gegangen, wenn ich wusste, dass die spezifische Ausnahme, meinen code gab Sie. Das problem mit der original-code, den Sie geschrieben ist, die WebAPI nutzt Newtonsoft ist JSON.Net als Standard-serializer. Also, wenn Sie übergeben Sie ein FileStream-er weiß nicht, was mit ihm zu tun. Mein code umgeht die Verwendung des Standard-serializer.
InformationsquelleAutor Kevin
Nur Idee:
Ausnahme @ 'using(var sr = new StreamReader(Datei))' Den stream kann nicht abgespielt werden
InformationsquelleAutor Miroslav Holec