web-dev-qa-db-ja.com

IISでexistingResponse = "PassThrough"はどういう意味ですか?

ドキュメントには

existingResponse="PassThrough"

既存の応答が存在する場合、応答をそのままにします。 http://www.iis.net/configreference/system.webserver/httperrors#005

しかし、「既存の応答が存在する」とはどういう意味ですか?

例えば。 customErrorsハンドラーがASP.NET応答を抑制したいので、IISは応答が存在しないと考えます。どうすればよいですか?

30
Andrey Shchekin

スキーマからの3つの可能な値があります。

<attribute name="existingResponse" type="enum" defaultValue="Auto">
  <enum name="Auto" value="0" />
  <enum name="Replace" value="1" />
  <enum name="PassThrough" value="2" />
</attribute>

大体、これが私がこれをどのように理解するかです:

PassThrough-応答がある場合、既存の応答をそのままにします。アプリケーションロジックが何も返さない可能性があります。その場合、ここで定義されたエラーページが使用されます。

自動-asp.netで設定した場合を除き、このノードで定義されているIISエラーページを使用します。

Response.TrySkipIisCustomErrors = true;

それを行った場合、コードからの応答が使用されます。

置換-開発者がTrySkipIisCustomErrorsを設定していても、常にIISエラーページを使用します。

最後のオプションはあなたが望むもののようです。


編集:

考慮してください:

existingResponse="PassThrough"

存在しないasp.netページを開こうとすると、以下が表示されます。

enter image description here

リソースがそこになくても、ランタイムは応答を提供し、ブラウザに渡されます。

次に、存在しないhtmlページを開いてみてください。今度は404ステータスは表示されますが、空のページが表示されます。

に変更:

existingResponse="Auto"

欠落しているasp.netページにはまだasp.netエラーページが表示されますが、欠落しているhtmlページの場合、IIS one:

enter image description here

要約すると、異なるexistingResponse値を持つhtmlおよびaspxページが見つからない場合、異なるエラーページが表示されます。

                .html-404   .aspx-404   .aspx-500
--------------------------------------------------
Auto             IIS         asp.net    asp.net
PassThrough      -           asp.net    asp.net
Replace          IIS         IIS        IIS
43
Peter Hahndorf