次のようなhttpリクエストパラメータを介して、asp.net Webページから動的に作成されたバイナリファイルを提供したいと考えていますwww.host.com/?Download=file
。これまでのところ、
protected void Page_Load(object sender, EventArgs e)
{
if (Request.Params.Allkeys.Contains("Download"))
{
String fileStr = Request.Params.GetValues("Download")[0];
using (Stream generatedFile = File.Create(@"C:\Temp\file"))
{
/* write the contents of the file */
}
Response.ContentType = "application";
Response.AddHeader("Content-Disposition",
"attachment; filename=" + fileStr);
Response.WriteFile(@"C:\Temp\file");
Response.End();
}
}
これは機能しますが、 C:\Temp\file はまだ存在するため、クリーンアップしたいと思います。スレッドを強制終了するため、呼び出しFile.Delete(@"C:\Temp\file");
後の呼び出しResponse.End()
は機能しません。Response.End()
Responseメソッドをブロック内に配置しても、Responseメソッドはファイルへのアクセスに失敗するため、機能しません。using
File.Create( (...), FileOptions.DeleteOnClose)
助言がありますか?