Warum sind DOCX-Dateien beim Herunterladen von einer ASP.NET-Seite beschädigt?

Ich habe folgenden Code, um Seitenanhänge an den Benutzer zu senden:

private void GetFile(string package, string filename)
{
    var stream = new MemoryStream();

    try
    {
        using (ZipFile zip = ZipFile.Read(package))
        {
            zip[filename].Extract(stream);
        }
    }
    catch (System.Exception ex)
    {
        throw new Exception("Resources_FileNotFound", ex);
    }

    Response.ClearContent();
    Response.ClearHeaders();
    Response.ContentType = "application/unknown";

    if (filename.EndsWith(".docx"))
    {
        Response.ContentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
    }

    Response.AddHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");
    Response.BinaryWrite(stream.GetBuffer());
    stream.Dispose();
    Response.Flush();
    HttpContext.Current.ApplicationInstance.CompleteRequest();
}

Das Problem ist, dass alle unterstützten Dateien ordnungsgemäß funktionieren (jpg, gif, png, pdf, doc usw.), aber .docx-Dateien beim Herunterladen beschädigt sind und von Office repariert werden müssen, damit sie geöffnet werden können.

Als erstes wusste ich nicht, ob das Problem beim Dekomprimieren der Zip-Datei bestand, die die .docx-Datei enthielt. Anstatt die Ausgabedatei nur in der Antwort zu platzieren, habe ich sie zuerst gespeichert und die Datei erfolgreich geöffnet Problem sollte bei Antwortschreiben sein.

Weißt du was passieren kann?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage