Response.TransmitFile を使用して、ある時点でユーザーにファイルを送信する ASP.NET アプリを開発しています。
私の開発マシンでは問題なく動作し、テスト サーバーにデプロイすると、そのうちの 2 台で引き続き動作します。サーバーの 1 つ (W2K3) では Firefox でのみ動作しますが、IE7 で試してみると、「Internet Explorer は (サーバー名) でファイル sendfile.aspx を開けません」のようなエラーが表示されます。
問題を再現するために小さなインライン aspx ページを作成しました。
<%@ Page Language="C#" %>
<html><head>
<script language="CS" runat="server">
void Page_Load(object sender, System.EventArgs e)
{
string filePath = @"C:\temp\export.zip";
Response.ClearHeaders();
Response.ContentType = "application/zip";
Response.Clear();
Response.AppendHeader("Content-disposition", "attachment; filename=export.zip");
Response.TransmitFile(filePath);
Response.End();
}
</script>
</head></html>
私はさまざまなことを試しましたが、行をコメントアウトすると再び機能することに気付きましたResponse.End
(ただし、少なくともウェブで見つけたすべてのサンプルコードによると、この行はそこにあるはずです)
関連する場合と関連しない場合があることに気付いた別の問題は、<html>, <head>
とその終了タグを削除すると失敗することです。
私はこれについてしばらく頭を悩ませてきましたが、これを機能させる方法を知っている人はいますか?