2016-07-07 7 views
1

Der folgende Code ist eine stark vereinfachte Testaktion in einem neuen MVC-Projekt. Die Aktion soll eine einfache Textdatei zurückgeben, die das Wort test enthält.ASP.net MVC Datei Inhalt-Länge

public ActionResult FileTest() 
{ 
    return File(System.Text.Encoding.UTF8.GetBytes("test"), "text/plain", "test.txt"); 
} 

Wenn die HTTP-Antwort vom Server sehen würde ich erwarten, einen Header mit Content-Length: 4, um zu sehen, stattdessen sehe ich Content-Length: 122

Chrome und IE durchaus in der Lage scheinen Verse die Zahl der Fehlanpassung in Content-Length Bewältigungs von tatsächlich zurückgegebenen Bytes. Firefox (v47) kann die Datei jedoch nicht herunterladen und zeigt unbegrenzt 4 von 122 heruntergeladenen Bytes.

Meine Frage ist: Ist das Verhalten, was ich Zeuge bin etwas, was ich falsch mache, oder ist das ein Defekt im Rahmen? Zweitens, was kann ich tun, um das Problem zu lösen?

Antwort

0

Ich überprüfte Ihren Code und es scheint auf FireFox v47 zu funktionieren.

Ich empfehle, den Rückgabetyp von "ActionResult" zu "FileResult" für die Rückgabe von Dateien zu ändern. Dies kann Ihr Problem beheben. Lassen Sie mich wissen, wenn Sie immer noch das gleiche Problem haben.

+0

Vielen Dank für Ihren Vorschlag, aber der Wechsel zu FileResult hat keinen Unterschied gemacht. Aus Interesse an Ihren Tests, was ist der Content-Length-Header als zurückgegeben? –

+0

Inhalt Länge war 122 aber Firefox immer noch die Textdatei herunterladen und ich konnte es öffnen. – Mahendra

+0

Ich habe gerade meine Installation von Firefox auf v47.0.1 aktualisiert und das Problem ist behoben. Ich kann nichts in den Versionshinweisen sehen, die das Verhalten erklären würden. Ich wäre immer noch interessiert zu verstehen, warum MVC falsche Content-Length-Header zurückgibt. –