IIS httpErrors ExecuteURLは、500; http://mysite.com/failed-pageなどの奇妙なクエリ文字列をターゲットURLに追加します


8

IISエラーページの奇妙な動作に気づきました。私はこの設定を持っています:

<httpErrors errorMode="Custom" existingResponse="Replace">
 <remove statusCode="500" />
  <error statusCode="500" responseMode="ExecuteURL" path="/error-page" />
</httpErrors>

クエリ文字列が長すぎるためにASP.NETエラーが発生した場合、エラーページのURLを実行しようとすると、すぐに2番目のエラーが発生します。IISが次のようにエラーページのURLに元のURLを追加するという事実まで、問題を追跡しました。

Original: http://example.com/someurl?id=some_very_long_query_string_causing_security_exception
Error: /error-page?500;http://example.com/someurl?id=some_very_long_query_string_causing_security_exception

これは大きな問題です。クエリ文字列が長すぎるために元のURLが失敗した場合、それに追加されたものを含むエラーページも、クエリ文字列がさらに長いため失敗します。

これはIISの最も愚かなバグだと思います。そのためのサービスパックのパッチがあったかどうか誰かが知っていますか?今までに何も修正されていない場合の最悪のシナリオ、この動作を無効にする方法、またはIISがエラーページに一方的なものを追加するのを停止するトリックはありますか?カスタムエラーページのメカニズム全体を壊すからです。


サー、私は同じ問題に直面しました。解決しましたか?
Denis

1
+1 StackOverflow 同じ質問をしました。答えが大好きです。
Muhammad Rehan Saeed 2016

回答:


1

パスに末尾のスラッシュを追加すると(たとえば、path = "/ error-page /")、エラーコードとURLの追加が停止されます。元の失敗したURLが保持されることに注意してください。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.