2011-01-26 4 views
0

ASP.NET MVCアプリケーションからIEで動作しないファイルのダウンロードに関する問題を解決しようとしています。キャッシングを有効にすると、IEでファイルをダウンロードできない

[HttpGet] 
    [OutputCache(Duration = 0, NoStore = true, VaryByParam = "*")] 
    public FileResult GetTemplate(int id) 
    { 
     var data = GetData(id); 

     return File(Encoding.ASCII.GetBytes(data), MimeType.Csv.Type, "template.csv"); 
    } 

ダウンロードがJavaScriptでwindow.open()コールを使用して開始されます。

コントローラのアクションは、次のようになります。 Firefoxではうまく動作しますが、IEではうまく動作しません。 IE download error

OutputCache属性を削除した場合、IEでは問題なく動作します。

なぜOutputCacheラインがIEでダウンロードを中断しますか?

+0

'OutputCacheAttribute'行を' [OutputCache(Duration = 1200、Location = OutputCacheLocation.Client、VaryByParam = "*"、NoStore = false)] 'に変更することで動作させることができました。私の質問はまだ成り立っていますが、私は解決策や回避策を探していません。私はIEでうまくいかない理由を理解しようとしており、説明を探しています。 – GiddyUpHorsey

答えて

1

あなたの最後の質問に答えるために、あなたが探しています説明のためにここにある:

http://support.microsoft.com/kb/323308

これは実質的にIEのバグです。

0

2つの可能性:

  1. window.openが、簡単なダウンロードリンク
  2. 使用application/octet-streamを使用しないでください:

    return File(
        Encoding.ASCII.GetBytes(data), 
        "application/octet-stream", 
        "template.csv" 
    );