0

ユーザーが通常のコンテンツを含む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 で機能することを付け加えたいと思います。問題は、応答に変更が見られないことです。

ありがとう

4

1 に答える 1

1

誰かがこの投稿を見たら、私は問題の理由を見つけました. IE8 には、ファイルのダウンロードをスクリプト要求から直接呼び出すことを許可しないセキュリティ ポリシーがあります。

ファイル作成状態を照会するサーバーへの一連の ajax 呼び出しを呼び出し、ファイルの準備が整ったときにダウンロード呼び出しを発行したため、IE はそれをキャンセルしました。

IE8 ポリシーをオーバーライドするために、ファイルの作成が完了したら、クライアントにファイルへのリンクを含むウィンドウをポップしました。そのリンクをクリックすると、ファイルが正常にダウンロードされました。

いつか誰かの役に立てば幸いです...

于 2013-05-29T09:59:45.157 に答える