ボタンクリックでテキストファイルをブラウザーにダウンロードする簡単なテストページを作成しています。今まで見たことのない、本当に奇妙なエラーが出ています。何かご意見は?
エラーは「Response.End();」で発生しますそして、ファイルはクライアントブラウザに到達しません
コード:
string filePath = "C:\\test.txt";
FileInfo file = new FileInfo(filePath);
if (file.Exists)
{
Response.ClearContent();
Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
Response.AddHeader("Content-Length", file.Length.ToString());
Response.ContentType = "text/plain";
Response.TransmitFile(file.FullName);
Response.End();
}
エラー:
コードが最適化されているか、ネイティブフレームが呼び出しスタックの上にあるため、式を評価できません。
に変更してみてください。
Response.Clear();
Response.ClearHeaders();
Response.ClearContent();
Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
Response.AddHeader("Content-Length", file.Length.ToString());
Response.ContentType = "text/plain";
Response.Flush();
Response.TransmitFile(file.FullName);
Response.End();
ダウンロードしたファイルの名前に問題がある場合は、上記のソリューションにわずかに追加するだけです...
Response.AddHeader("Content-Disposition", "attachment; filename=\"" + file.Name + "\"");
スペースやその他の文字が含まれている場合でも、これにより正確なファイル名が返されます。