在Page_Load()部分中,我檢查有效輸入&,因爲它們無效,所以我將請求傳輸到自定義錯誤頁面。無法將請求傳輸到期望的ASP.NET錯誤頁面
雖然這樣做,拋出了一個ThreadAbortException,它被我的catch塊捕獲,但asp.net將請求傳輸到未知的異常頁面。 我在做什麼錯?當我轉移到錯誤頁面時,我不想讓ThreadAbortException異常來。 如:
protected void Page_Load(object sender, EventArgs e)
{
try
{
if (String.IsNullOrEmpty(szProductName))
{
//Product name not given. Hence cant process further.
Server.Transfer(Constants.ERROR_WRONG_INPUTS_ASPX);
}
else
{
//Do something.....
}
}
catch(Exception Ex)
{
}
}
作爲一種變通方法,我現在使用:
Response.Redirect(Constants.ERROR_WRONG_INPUTS_ASPX, false);
,而不是Server.Transfer的,即我讓這個進程繼續在這令我需要只檢查有效性&那麼背景執行剩餘的代碼。
我的問題類似於:Exception Handling Application Block Exception Handler running in ASP.NET cannot call Response.End()但它似乎沒有回答。
事情是,用戶將通過鏈接來到我的頁面:http://MyServer/MySite/Details.aspx?ProductName = FireFox。 所以我可以檢查產品是否有效,只有當他的請求來到我的服務器。如果他沒有輸入產品名稱,我需要告訴他他輸入了錯誤的輸入(也是錯誤產品的情況)。 我無法幫助用戶輸入錯誤的產品名稱/無名稱,因爲這是我的手。有什麼建議麼? – 2009-07-26 17:25:15
如果確實是無效的情況,我會拋出一個錯誤並讓應用程序錯誤處理接管。特別是如果錯誤意味着在調用應用程序中存在問題。 或者,如果這不是一個選項,我會返回到調用應用程序識別問題。 – 2009-07-26 21:00:23