Ich versuche, eine Ansicht, die eine HTML-Tabelle als herunterladbare Datei für den Benutzer enthält, als eine Excel-Datei zu senden.Serving einer Ansicht als Datei in asp.net mvc
Ich bekomme immer den Fehler "Server kann Inhaltstyp nicht festlegen, nachdem HTTP-Header gesendet wurden.". Ich kann nicht herausfinden, was falsch läuft ...
Hier einige Code:
Excel.aspx:
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>
<html>
<head runat="server">
<title>Excel</title>
</head>
<body>
....
</body>
</html>
ControllerAction:
public FileResult Excel()
{
string view = RenderViewToString(this.ControllerContext, "~/Views/Shared/Excel.aspx", null, this.ViewData, this.TempData);
MemoryStream stream = new MemoryStream(System.Text.Encoding.ASCII.GetBytes(view));
string mimetype = RainbowsDotNet.FileHandling.MimeType.GetMimetypeFromExtension(".xls");
FileStreamResult filestreamresult = new FileStreamResult(stream, mimetype);
filestreamresult.FileDownloadName = "Employees_{0}.xls".FormatWith(DateTime.Now.ToString("ddMMyyyy_HHmmss"));
return filestreamresult;
}
Während des Debuggens, string „-Ansicht "enthält:
"\r\n<html>\r\n<body>............................"
Irgendeine Idee? Ich mache genau das gleiche mit einem Blob und das gibt nett ein Dokument zum Download zurück.
Ich weiß, das ist offensichtlich, aber Ihre Header wurden bereits an den Client gesendet, so dass Sie herausfinden müssen, warum. Was bewirkt, dass die Header bereits gesendet wurden. Möglicherweise haben Sie keine Pufferung aktiviert? Deaktivieren Sie die Pufferung absichtlich anderswo? –
Ihre "Ansicht" -Daten sind ein YSOD (Yellow Screen Of Death), ich würde dort anfangen – mxmissile
hmm, ich habe die Pufferung nicht berührt, aber immer noch. Ich mache genau das gleiche wie in einem anderen Controller, wo ich auch Dokumente zurückgebe und es funktioniert gut dort ... nur ein FileResult, das ein FileStreamResult zurückgibt. –