web-dev-qa-db-ja.com

IIS 8.5(Win 2012 R2)のasp.netエラーに対して空白ページが「200OK」で提供されるのはなぜですか?

IIS 8.5を実行する新しいWindows2012R2サーバーをセットアップしました。

エラーが発生した場合(たとえば、ASP.NET State Serviceが実行されていなかった場合)、500ステータスコードエラー画面を出力する代わりに、要求は実際には完全に空白のページ(ヘッダーのみ-コンテンツなし)を返すことに気付きました。私たちは明らかにエラーを確認する必要があり、エラーに対して200 OKを提供することは、Googleなどのインデクサーや任意のwesite監視ツール(サイトがオフラインになったことを通知しない)にとって非常に問題になる可能性があります。

他のサーバー(IIS 7)では、「状態サーバーに接続できませんでした」(または同様の)というメッセージとともに「黄色のエラー画面」が表示されます。

ここで何が間違っている可能性がありますか?すべてのエラーをグロバブルに無効にする設定はありますか(ただし、200ステータスコードも提供する場合、これはばかげています)、または何か他のものが邪魔になる可能性がありますか?

干渉する可能性がある他の唯一のことは、サーバーにISAPI_Rewriteがインストールされていることです(ただし、これによって通常この問題が発生することはありません)。

ありがとう!

15
NickG

Windows8でも同様の問題がありました。

設定で「Windowsの機能をオンまたはオフにする」を検索します。

次の機能が有効になっていることを確認してください

"/インターネットインフォメーションサービス/ワールドワイドウェブサービス/一般的なHTTP機能/ HTTPエラー"。 "/インターネットインフォメーションサービス/ワールドワイドウェブサービス/共通HTTP機能/ 静的コンテンツ"。

20
Dmitry Dzygin

ASPモジュールでサーバー側デバッグが有効になっていないことを確認する必要があります。

クラシックASPサーバー500エラーは200として返されます。サーバー側デバッグアプリケーションを開こうとしましたが、見つかりませんでした。その後IIS 200の応答と空白のページを返します。

6
Gers

Global.asax.csのApplication_ErrorでServer.ClearError()を呼び出していないことを確認してください。これが、私の問題になりました。

4
DeadlyChambers

すべてのGlobal.asaxコードをリッピングすることで、エラーの原因を見つけることができました。

その後、IISは期待どおりにエラーページを返し始めました。その後、修正が適用された後、Global.asaxコードを返しました。

多分この場合はあなたを助けます。

3
Cesar

Default.aspx(ディレクトリでページのデフォルトとして設定)を要求したときに同様の問題が発生しました。サーバーはステータス200を返しましたが、コンテンツは空白でした。

この場合、アプリケーションプールのマネージパイプラインモードを統合からクラシックに切り替えることができました。

1
Torpoli

HTTPアクティベーションが有効になっていることを確認してください

0
Shirley