我想在發生異常時使用Response.Redirect重定向瀏覽器。
我也想將異常消息傳遞給我的錯誤頁面。重定向到錯誤頁面
例如:
string URL = "Page2.aspx?Exception=" + ex.ToString()
Response.Redirect(URL)
能不能做到?這是正確的語法?
我想在發生異常時使用Response.Redirect重定向瀏覽器。
我也想將異常消息傳遞給我的錯誤頁面。重定向到錯誤頁面
例如:
string URL = "Page2.aspx?Exception=" + ex.ToString()
Response.Redirect(URL)
能不能做到?這是正確的語法?
而不是Response.Redirect
,它向客戶端發送一個響應,要求它請求不同的頁面,您應該調用Server.Transfer
,立即運行不同的頁面並將該頁面直接發送到客戶端。
然後,您可以在HttpContext.Items
中輸入異常,並在錯誤頁面中從HttpContext.Items
中讀取異常。
例如:
catch (Exception ex) {
HttpContext.Current.Items.Add("Exception", ex);
Server.Transfer("Error.aspx");
}
在Error.aspx
,你就可以得到這樣的例外:
<%
Exception error;
if (!HttpContext.Current.Items.Contains("Exception"))
Response.Redirect("/"); //There was no error; the user typed Error.aspx into the browser
error = (Exception)HttpContext.Current.Items["Exception"];
%>
是,將工作(添加,當然一些分號,你可能只是想發送的異常消息):
String URL = "Page2.aspx?Exception=" + ex.Message;
Response.Redirect(URL);
通常我會在我的網頁板,並在catch塊切換可見向用戶顯示友好的消息。我還會在自己的電子郵件中包含詳細報告錯誤信息的報告。
try
{
}
catch (Exception ex)
{
formPanel.Visible = false;
errorPanel.Visible = true;
// Log error
LogError(ex);
}
至於報告/轉發錯誤到另一頁:
string errorURL = "ErrorPage.aspx?message=" + ex.Message;
Response.Redirect(errorURL, true);
而且不要忘記ELMAH! http://bit.ly/HsnFh
正如安德魯所說,它應該工作。
但是,如果您正在尋找錯誤管理,那麼最好使用Server.GetLastError()
,以便獲得完整的包含堆棧跟蹤的Exception
對象。
這裏是一般的MSDN article that deals with Application Errors和使用Server.GetLastError()
。
我們總是建議對重定向到一個.aspx頁上的錯誤條件。
過去我們已經看到了一些場景,其中應用程序的一個基本問題導致了錯誤的發生,然後又重定向到一個error.aspx頁面,該頁面自身出現了錯誤,導致無盡的重定向循環。
我們強烈建議人們使用.htm頁面或某些不由ASP.NET框架處理的錯誤頁面。
在ASP.NET中使用Web.config的customErrors
部分內置了支持,可以爲您自動處理錯誤重定向。
你可以看看全球的異常處理過,這可以通過該Application_OnError
事件,你可以在Global.asax內找到
由於管理,
菲爾