2017-06-19 5 views
0

ich eine Datei Inhalt von WebAPI Rest Service verwenden zu lesen und zurück bin versucht, ich bin die Antwort in der Verwendung .. Block zurück. Ich erhalte System.ObjectDisposedException. Kann mir jemand dabei helfen?Kann nicht geschlossene Datei System.ObjectDisposedException zugreifen

using (var fileStream = new FileStream(LocalFilePath, FileMode.Open)) 
      { 
       response.Content = new StreamContent(fileStream); 
       response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = "MaxRecords.xls" }; 
       response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.ms-excel"); 
       return response; 
      } 
+1

Verwenden Sie nicht "verwenden" Block dann? – Evk

+0

Funktioniert es Wenn Sie den Verwendungsblock entfernen? 'response.Content' referenziert eine Instanz, die entsorgt wird (' fileStream'). –

+0

@DaveBecker Ja, es funktioniert nach dem Block mit Entfernen .. Aber ich wollte mit Block haben, um die Filestream zu entsorgen :( –

Antwort

0

Sie müssen ein Stream-Pushing-Objekt erstellen, das nach Bedarf Bits der Datei auf dem Draht erzeugt. Ich habe selbst einen gebaut, aber ich verstehe, dass es heutzutage einen in der Box gibt - genannt PushStreamContent. Hier ist ein ziemlich einfaches Beispiel, das does something similar zu was Sie brauchen.

Das Problem ist, entweder der Client muss den Stream schließen, oder die PushStreamContent muss es schließen, wenn alle Bytes geschrieben wurden, aber mit dem using Block, schließen Sie es sofort, wenn Sie senden.

Verwandte Themen