2015-06-25 16 views
24

Các tài liệu nóiHiện tạiResponse = "PassThrough" có nghĩa là gì trong IIS?

existingResponse="PassThrough"

Lá phản ứng bị ảnh hưởng nếu một phản ứng hiện có tồn tại. http://www.iis.net/configreference/system.webserver/httperrors#005

Nhưng điều đó có nghĩa là gì bởi "câu trả lời hiện có tồn tại"?

Ví dụ: Tôi muốn xử lý customErrors của tôi để ngăn chặn các phản ứng ASP.NET, do đó IIS sẽ nghĩ rằng phản ứng không tồn tại. Tôi sẽ làm như thế nào?

+1

Xem http://serverfault.com/a/124074/87017 – Pacerier

Trả lời

33

Có ba giá trị có thể, từ sơ đồ:

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

đại khái, đây là cách tôi hiểu điều này:

passthrough - lá phản ứng hiện một mình, miễn là có một . Có thể logic ứng dụng của bạn không trả về bất cứ thứ gì. Trong trường hợp đó, trang lỗi được định nghĩa ở đây được sử dụng.

Auto - sử dụng các trang lỗi IIS theo quy định tại nút này trừ khi trong asp.net bạn đã thiết lập:

Response.TrySkipIisCustomErrors = true; 

nếu bạn đã làm điều đó, phản ứng từ mã của bạn được sử dụng.

Thay thế - luôn sử dụng các trang lỗi IIS, ngay cả khi nhà phát triển đã đặt TrySkipIisCustomErrors.

Tùy chọn cuối cùng có vẻ là tùy chọn bạn muốn.


Edit:

xem xét:

existingResponse="PassThrough" 

bây giờ cố gắng để mở một không tồn tại trang asp.net, bạn sẽ thấy:

enter image description here

Mặc dù tài nguyên không có ở đó, thời gian chạy đã cung cấp một phản hồi, nó được chuyển tới trình duyệt.

Bây giờ, hãy thử mở một trang html không tồn tại. Lần này chúng tôi vẫn nhận được trạng thái 404 nhưng trang trống.

thay đổi để:

existingResponse="Auto" 

trang asp.net mất tích vẫn hiển thị asp.net trang lỗi, nhưng đối với các trang html thiếu bây giờ chúng ta có được IIS một:

enter image description here

Vì vậy, tóm tắt: khi nhìn vào thiếu html và aspx trang với nhau existingResponse giá trị, chúng tôi nhận trang lỗi khác nhau:

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

Vậy làm cách nào để giả vờ không có phản hồi từ ASP.NET để 'PassThrough' sử dụng trang lỗi? Tôi đã thử gọi 'Response.End' mà không gửi bất cứ thứ gì, nhưng nó không hoạt động. –

+1

_Các tùy chọn cuối cùng có vẻ là một trong những bạn muốn_ - Tôi chỉ muốn gửi trang lỗi IIS nếu không có phản ứng khác từ ASP.NET, không thay vì mỗi phản ứng với mã lỗi. –

+0

@AndreyShchekin - trong trường hợp đó PassThrough có vẻ là lựa chọn tốt nhất. –