1

テンプレートから Excel ファイルを生成する Web アプリケーションがあります。

新しいファイルがクライアントにストリーミングされると、ファイルを削除しました。これは私のコンピューターでは問題なく動作しますが、何らかの理由で、別のコンピューターから Web サイトにアクセスすると、クライアントにストリーミングされる前にファイルが削除されるため、ファイルは常に空 (0 バイト) になります。コードは次のとおりです。

try
{
  Response.Clear();
  Response.ClearHeaders();
  Response.ContentType = "application/ms-excel";
  Response.AddHeader("content-disposition", "attachment;filename=" + newFN + ".xlsx");                            
  Response.TransmitFile(DestFile);
  Response.Flush();
  Response.End();
}
finally
{
  File.Delete(DestFile);
}

これが私のコンピューターからは正常に機能し、別のコンピューターからは機能しないのはなぜですか?

生成されたファイルを削除するにはどうすればよいですか? スケジュールタスクのように、日付ごとに特定の日付より前のファイルをすべてチェックし、それらを削除することを考えていますが、他の解決策はありますか?

4

1 に答える 1

2

以下は私のために働きます:

Response.Clear();
Response.ClearHeaders();
Response.ContentType = "application/ms-excel";
Response.AddHeader("content-disposition", "attachment;filename=" + newFN + ".xlsx");                            
Response.TransmitFile(DestFile);
Response.Flush();
File.Delete(DestFile);
HttpContext.Current.ApplicationInstance.CompleteRequest();

Response.BinaryWriteただし、ファイルが動的に生成されている場合は、このメソッドの使用を検討する必要があります。

于 2013-01-29T17:16:39.270 に答える