ユーザーが通常のコンテンツを含むExcelファイルをダウンロードできるアプリケーションを開発しています(数Mb以下)。
IE9 ではファイルは完全にダウンロードされますが、IE8 ではダウンロードを許可するページの一部が機能しません。
ダウンロードバーを表示せずに、新しいページが開いてすぐに閉じられます。
キャッシュ制御ヘッダーは非公開に設定されています。
IE8 の追加機能をすべて無効にしました。
ファイルの保存を許可するページと機能しないページの両方のサーバーからの応答を一致させ、それらは完全に一致します(パスは別として)
ファイルが完全にダウンロードされる場合とダウンロードされない場合がある理由はわかりません。
ファイルのダウンロードに使用するサーバー側のコードは次のとおりです。
protected void GetExportedFile()
{
string filename = Form("filename");
if (string.IsNullOrEmpty(filename))
{
Logger.Instance.Write("GetExportedFile is missing the parameter filename");
Response.Redirect("ErrorPage.aspx");
}
string filePath = Context.Server.MapPath("****/****/" + filename);
Response.ClearHeaders();
Response.ClearContent();
SetContentType(ContentType.Excel);
Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", filename));
Response.WriteFile(filePath);
Response.Flush();
try
{
File.Delete(filePath);
}
catch (Exception ex)
{
Logger.Instance.Write(
"GetExportedFile failed to delete the file '" + filePath +
"', Error: " + ex.ToString(), "Error");
}
try
{
Response.End();
}
catch (ThreadAbortException ex)
{
//Don't add anything here.
//because if you write here in Response.Write,
//that text also will be added to your text file.
}
}
言及する必要がありますが、IE8で機能しないダウンロードの前に、Excelの生成が終了したかどうかを通知するためにいくつかのajax呼び出しを行っていることは関係ないと思いますが、機能するページではこれを行いません手順。
また、アプリケーションがアプリケーション ファイアウォール (F5) の背後にあり、非アクティブ化するとすべてのダウンロードが IE8 で機能することを付け加えたいと思います。問題は、応答に変更が見られないことです。
ありがとう