1

最近、従来の ASP Web アプリケーションを Windows 2008 R2 上の IIS 6 から IIS 7.5 に移動しました。このサイトは、IIS 6 で 4 年以上にわたって正常に動作しています。ほとんどの場合、サイトは IIS 7.5 で問題なく動作しますが、ページをロードするときに、ブラウザーが応答を適切に処理しないという問題が発生することがあります。その結果、実際の応答ヘッダーは、タグの前<html>またはタグの後の応答の本文で返され</html>ます。応答が<html>タグの前の上部にある場合、ブラウザーでエンド ユーザーに表示されます。

<html>ヘッダーがタグの上にあるサンプル応答:

HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 9714
Content-Type: text/html
Server: Microsoft-IIS/7.5
P3P: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"
Set-Cookie: CSB=UserType=3&Client=805157&FNAME=John+Doe&CAMS=False&Client%5FUser%5FMode=Online&Session=650680780&User=1&LastViewed=https%3A%2F%2Fsite%2Edomain%2Ecom%2Fcsb%2Fclient%2Fdefault%2Easp%3FClient%3D123456%26PBAT%3D654321%26BAT%3D654321&Username=jjd; path=/
X-Powered-By: ASP.NET
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="content-type" content="text/html;charset=iso-8859-1" />
        <title>some page</title>
        <script>...</script>
    </head>
    <body>
    </body>
</html>

応答ヘッダーのコンテンツは、文字通りブラウザーの画面にレンダリングされます。この問題は、すべてのリクエストで発生するわけではありません。IE と Chrome で問題を再現できましたが、ランダムなので、根本的な原因を突き止めるのに苦労しました。

ヘッダーが</html>タグの下に出力され、ブラウザーでレンダリングされないことがあります。

IIS または ASP によってスローされるエラーはありません。これを見つけて、IIS でトレースに失敗した要求モジュールを使用しようとしましたが、要求が実際には失敗しないため、トレースするものが何もないため、役に立ちませんでした。

Fiddler でトラフィックを監視しようとしましたが、実際の応答ヘッダー テキストが応答本文と共に返されているため、応答のサイズがヘッダーで宣言されているよりも大きいという警告しか表示されません。

サーバーは Windows ファイアウォールと eset アンチウイルスを実行していますが、両方とも古い IIS 6 ボックスでも実行されていました。

IIS の構成に関しては、従来の ASP を実行するために人々が推奨するすべての基本事項を実行しました。

私は IIS 構成に関しては初心者ではありませんが、これは私が実際に使用している唯一の ASP サイトであり、新しいセットアップで適切に実行できるようにすることだけを試みています。

立ち往生しています。これを以前に見た人はいますか?

4

2 に答える 2

1

これは、バグのある Web アプリケーション ファイアウォールによって導入された ISAPI フィルターの問題であることが判明しました。ISAPI フィルタを無効にしてテストしましたが、問題を発見するには ISAPI を完全に削除する必要があることが判明しました。その後、ベンダーはバグを修正するためのパッチを提供してくれました。助けてくれてありがとう!

于 2012-11-30T18:55:16.270 に答える
0

これを試して:

Response.Buffer=True

それがあなたのために働くかどうか教えてください...

詳細については。Response.Buffer については、http://www.w3schools.com/asp/met_clear.aspを参照してください。

または、以下のコードのいずれかを試してください。(動作するかどうかを確認するために 1 つずつ)

Response.Clear()
Response.ClearHeaders()
Response.Flush()
Response.End()
Response.AddHeader "Content-Length", "838100"

幸運を...

于 2012-08-17T15:22:43.067 に答える