私はファイルをストリーミングするためにASP.NETを使用する場合はなぜIIS7は、私のContent-Typeヘッダを無視するのですか?

StackOverflow https://stackoverflow.com/questions/2230516

質問

私は2つのページで簡単なWebサイトを持っています。一つは、ファイルのリストを表示し、それをリストでクリックだときに、他のファイルをストリーミングします。すべては、6ヶ月間の生産の罰金だったが、今私は、Windows 2008 / IIS7にサイトを移動する必要があります。私はそれがほとんど働いていたが、私のContent-Typeヘッダは無視されているため、ファイルは(Firefoxで)正常に開きません。

:生産拠点(IIS6)のヘッダ(フィドラーを使用して)しているオン
HTTP/1.1 200 OK
Date: Tue, 09 Feb 2010 16:00:51 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Content-Disposition: attachment; filename="myfile__foo.pdf"
Content-Length: 236841
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: -1
Content-Type: application/octet-stream

私は取得テストIIS7サーバー上:

HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 236841
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/7.5
X-AspNet-Version: 2.0.50727
Content-Disposition: attachment; filename="myfile__foo.pdf"

フィドラーは、プロトコル違反を報告し、言う、「コンテンツ長の不一致を:レスポンスヘッダーは236841のバイトを主張しますが、サーバが238378のバイトを送った。」

私のコードは次のようになります:

            Response.Clear();
            Response.AddHeader("Content-Disposition", "attachment; filename=\"" + doc.DisplayFilename + "." + doc.FileExtension + "\"");
            Response.AddHeader("Content-Length", file.Length.ToString());
            Response.ContentType = "application/octet-stream";
            Response.TransmitFile(file.FullName);
            Response.End();

私は数日間、この問題を解決しようとしてきました。私はIIS7とその慣れていないよ、どこで各種設定を変更する方法を見つけるのに苦労してきました。私は2つのマネージパイプラインモードについて把握するために管理しなかったと(ファイルを送信するときに、統合がエラーのすべての種類を投げていた)クラシック.NETアプリケーションプールに切り替えることにより、他のいくつかの問題を修正します。

それは何が起こっているかだ場合、私のContentTypeヘッダーを上書きしないようにIIS7を伝えるためにいくつかの方法がありますか?

役に立ちましたか?

解決

あなたはリクエスト/レスポンスを変更する一切のHttpModulesを持っていませんか? web.configファイルは正確に同じですか?

ここでこれらの余分な2Kバイトから来ていますか?それらの中には何ですか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top