文字列にファイルパス(path
、以下)を作成した後(Path
はSystem.IO
ですが、他の人のコードを使用しており、Path
を使用するようにリファクタリングする機会はありません)。私は、ユーザーにファイルを提供するためにFileStream
を使用しています(下記参照):Response.End()
とResponse.Close()
の使用を避けるためにASP.NET How To Stream File To Userな理由:FileStreamを使用してファイルをダウンロードすると、ページエラーメッセージがファイル名ではなくaspxページ名を参照するのはなぜですか?
FileStream myStream = new FileStream(path, FileMode.Open, FileAccess.Read);
long fileSize = myStream.Length;
byte[] Buffer = new byte[(int)fileSize + 1];
myStream.Read(Buffer, 0, (int)myStream.Length);
myStream.Close();
Response.ContentType = "application/csv";
Response.AddHeader("content-disposition", "attachment; filename=" + filename);
Response.BinaryWrite(Buffer);
Response.Flush();
Response.End();
私から見てきました。 ファイルを転送するさまざまな方法についていくつかの記事を見て、同僚との問題(httpsとhttpヘッダー)の解決策を見つけて見つけました。
ただし、表示されていたエラーメッセージは、path
のファイルへのアクセスではなく、aspxファイルです。
編集:エラーメッセージは次のとおりです。
Internet Explorer cannot download MyPage.aspx from server.domain.tld
Internet Explorer was not able to open this Internet site. The requested site is either unavailable or cannot be found. Please try again later.
(ページ名とアドレスが匿名)
これはなぜでしょうか?そのアドレスでアクセスされているファイルではなく、HTTP応答.Flush()
メソッドからのファイルの内容が原因ですか?
メッセージを表示することができますか? –