私はExcelファイルとして、ダウンロード可能なファイルとしてhtmlテーブルをユーザに表示しようとしています。asp.net mvcでファイルとしてビューを提供する
「HTTPヘッダーが送信された後、サーバーはコンテンツタイプを設定できません。」というエラーが表示され続けます。
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;
}
デバッグ、文字列「ビュー間、私はここにいくつかのコードだ...間違っている何が起こっているのか
を把握することはできません"含まれています:
"\r\n<html>\r\n<body>............................"
何がいいですか? ブロブを使ってまったく同じことを行い、ダウンロードするドキュメントをうまく返します。
これは明らかですが、ヘッダーはすでにクライアントに送信されているため、理由を調べる必要があります。ヘッダーが既に送信された原因は何ですか。バッファリングが有効になっていない可能性がありますか?意図的にバッファリングを無効にしていますか? –
あなたの「ビュー」データはYSOD(死の黄色いスクリーン)です。私はそこから始めるでしょう – mxmissile
うーん、私はバッファリングに触れていませんでしたが、まだ。私は、ドキュメントを返す別のコントローラとまったく同じことを行い、そこでは正常に動作します... FileStreamResultを返すFileResultだけです。 –