5

2ページのシンプルなWebサイトがあります。1つはファイルのリストを表示し、もう1つはリストでクリックされたときにファイルをストリーミングします。実稼働環境では6か月間すべて問題ありませんでしたが、今度はサイトをWindows 2008/IIS7に移動する必要があります。私はそれをほとんど機能させていますが、私のcontent-typeヘッダーが無視されているため、ファイルは(Firefoxで)正しく開かれません。本番サイト(IIS6)では、ヘッダーは(Fiddlerを使用して)次のとおりです。

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"

Fiddlerはプロトコル違反も報告し、「コンテンツの長さの不一致:応答ヘッダーが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つのマネージドパイプラインモードについて理解し、Classic .NET AppPoolに切り替えることで他のいくつかの問題を修正しました(Integratedはファイルの送信時にあらゆる種類のエラーをスローしていました)。

何が起こっているのか、IIS7にContentTypeヘッダーを上書きしないように指示する方法はありますか?

4

1 に答える 1

0

要求/応答を変更するHttpModuleがありませんか?web.configファイルはまったく同じですか?

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

于 2010-02-09T21:29:44.097 に答える