2011-10-12 25 views
0

現在,這與我提出的問題緊密耦合並且具有answered yesterday在IIS/.net中僞造HTTP子狀態碼用於測試

這個問題適用於測試asp.net錯誤(例如直接測試500,404,502等錯誤),但是當我試圖測試錯誤,如500.13 - Web服務器太忙或502.2 - 壞門戶,我無法解決如何做到這一點。

我認爲,由asp.net生成/處理的錯誤與IIS(IIS處理子狀態代碼,如500.13等)的錯誤有明顯區別。

有沒有人有關於如何測試這些的任何想法?我發現你以下面的方式這樣做的web.config中處理這些子狀態錯誤:

<httpErrors errorMode="Custom" existingResponse="Replace"> 
    <clear/> 
    <error statusCode="404" path="/errorPages/404.html" responseMode="Redirect"/> 
    <error statusCode="500" path="/errorPages/500.html" responseMode="Redirect"/> 
    <error statusCode="500" subStatusCode="13" path="/errorPages/500.13.html" responseMode="Redirect"/> 
    <error statusCode="502" subStatusCode="2" path="/errorPages/502.2.html" responseMode="Redirect"/> 
</httpErrors> 

總括來說,我只是希望能夠模擬/複製的子狀態錯誤等如.net中的500.13或502.2,以便我可以測試IIS返回我在web.config中指定的正確頁面。

感謝

回答

-1

最簡單的方法是在你的應用程序,返回status code you want來創建頁面。

的Page_Load // HttpContext.Current.Response

Response.Clear(); 
if(Request.QueryString["code"] == null) 
    Response.StatusCode = someDefault; 
else 
    Response.StatusCode = int.Parse(Request.QueryString["code"]); 

你可以接收查詢字符串參數,這樣它會更容易實現自動化。

+0

嗨大衛,謝謝你的回答,但這不是我要找的。如問題中所述,我希望IIS攔截/處理請求,並使用web.config中定義的正確頁面進行響應。更改Response.StatusCode只會更改響應頭代碼,並且不會被IIS攔截,因爲在此之前的生命週期中太晚了 – Danjuro