ダウンロード用の応答にファイルを書き込もうとしています。私が使う:
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=" + name);
Response.ContentType = GetMimeType(path);
Response.BinaryWrite(File.ReadAllBytes(path).ToArray());
Response.End();
これは、複数のデスクトップブラウザで正常に機能します。ただし、WindowsPhone8デバイス上のInternetExplorerMobile 10では、失敗します。予想どおり、「タップして開く」というメッセージが表示された画面が表示されます。
ただし、メッセージをタップすると、URLが「Default[x].htm」の空白のページに移動します。「x」はこれまで1、2、3でした。このページをお気に入りに追加すると、Default [x] .htmlの完全なURLが「file:// C:\ Data \ Users \ DefApps \ AppData \ INTERNETEXPLORER \ INetCache \ WNW0K564 \Default[x]」であることがわかります。 htm」。
これは、ファイルの拡張子やMIMEタイプに関係なく同じです。なぜこれが起こっているのか私は困惑しています。IE Mobileと互換性のある応答にファイルを書き込む別の方法はありますか?
私が言ったように、これはファイル拡張子やMIMEタイプに関係なく失敗します。一例として、状況が次のとおりであることを確認しました。
filename: themes.ppt, MIME Type: application/vnd.ms-powerpoint
直接リンクするとすべてのファイルが正常にダウンロードされますが、セキュリティ上の理由からこれを行うことはできません。ファイルの一時的なコピーを作成してそれらのコピーにリンクしたくないのですが、応答にそれらを書き込む方法が見つからない場合は、そうする必要があります。