Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
827 views
in Technique[技术] by (71.8m points)

asp.net - What does existingResponse="PassThrough" mean in IIS?

The documentation says

existingResponse="PassThrough"

Leaves the response untouched if an existing response exists. http://www.iis.net/configreference/system.webserver/httperrors#005

But what does that mean by "existing response exists"?

E.g. I want my customErrors handler to suppress the ASP.NET response, so that IIS would think that response doesn't exist. How would I do that?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

There are three possible values, from the schema:

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

Roughly, here is how I understand this:

PassThrough - leaves the existing response alone, as long as there is one. It is possible that your application logic doesn't return anything. In that case the error page defined here is used.

Auto - uses the IIS error pages as defined in this node except when in asp.net you did set:

Response.TrySkipIisCustomErrors = true;

if you've done that, the response from your code is used.

Replace - always uses the IIS error pages, even if the developer has set TrySkipIisCustomErrors.

The last option seems to be the one you want.


Edit:

Consider:

existingResponse="PassThrough"

now try to open a non-existing asp.net page, you'll see:

enter image description here

Even though the resource was not there, the runtime provided a response, it is passed through to the browser.

Now, try to open a non-existing html page. This time we still get a 404 status but an empty page.

changing to:

existingResponse="Auto"

the missing asp.net page still displays the asp.net error page, but for the missing html page we now get the IIS one:

enter image description here

So, summarizing: when looking at missing html and aspx pages with different existingResponse values, we get different error pages:

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...