in einer Web-API-Methode gesendet beendet ich eine Datei bin zu erzeugen und sie dann wie so auf die Antwort StreamingWeb Api - Wie zu erkennen, wenn eine Antwort hat wurde
public async Task<HttpResponseMessage> GetFile() {
FileInfo file = generateFile();
var msg = Request.CreateResponse(HttpStatusCode.OK);
msg.Content = new StreamContent(file.OpenRead());
msg.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");
msg.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") {FileName = file.Name};
return msg;
}
weil dies eine generierte Datei Ich mag lösche es, nachdem die Antwort das Streaming beendet hat, aber ich kann anscheinend keinen Haken in der Pipeline finden.
Ich nehme an, dass ich einen Verweis auf die Datei in einer statischen setzen und einen benutzerdefinierten MessageHandler einrichten kann, die Werte aus dieser statischen Variable zieht und löscht. Dies scheint jedoch unmöglich zu sein, sowohl wegen der Verwendung von statischen Daten (wenn dies alles pro Anfrage sein sollte) als auch wegen der Notwendigkeit, eine separate Route zu registrieren.
Ich habe this question gesehen, aber es scheint nicht wirklich eine sehr nützliche Antwort zu haben.
Dank Kiran, ich habe versucht, so etwas mit einem Dekorateur Muster zu tun und zog mir die Haare aus, weil ich Publikum nicht einfach außer Kraft setzen konnte. In diesem Sinne (und da Sie an Web API arbeiten) besteht die Möglichkeit, dass HttpContent auf einer Schnittstelle in der Zukunft basiert. –
Und yeah, ich erzeuge ein pdf, mache es aber, indem ich phantomjs ausschalte, also ist eine Datei mein grundlegendes Austauschformat, leider kein 'Stream' –