一句話要說。這是有史以來最好的.NET社區。保持 !重定向ASP.NET頁面
最近我有一個問題,我設法得到它的兩個解決方案,我想知道應該選擇哪一個。
這裏的問題:
當用戶請求我的網站(WWW .COM),我要去他重定向到,因爲它是一個多語種的網站(WWW .COM/EN)。
我正在使用.NET路由。
在default.aspx頁面的Page_Load中,我檢查Routing Collection中的語言是否可用,我不重定向。如果它不可用,我將重定向到(www.___.com/en)。這裏是代碼:
if (Page.RouteData.Values.Count == 0)
{
if (SessionManager.IsUserAuthenticated)
{
//Redirect To User HomePage for his Main Language
Page.Response.Redirect(UserManager.GetUserMainPageWhenLoggedIn(SessionManager.LoggedUser.LanguageID,true));
}
else
{
Page.Response.Redirect(String.Format("~/{0}", Cultures.en.ToString()), true);
Helpers.SetCulture(Cultures.en.ToString());
}
}
我正在使用Response.Redirect來做到這一點。現在,如果我設定結束的響應方法的參數,它會拋出一個異常,所以我可以處理它throught
try
{
this.InitializeLayout();
}
catch (ThreadAbortException ex)
{
}
catch (Exception ex)
{
ExceptionManager.LogException(ex);
}
如果我不停止響應,網頁會執行整個生命週期,重定向,然後再次執行它會導致頁面的雙重執行。
我的主要目標不是執行該頁面2次以最小化處理(如果該網站受到大流量攻擊)。如果我結束響應,將會拋出一個ThreadAbortExeption,我認爲這對網站並不好(我可以捕獲它並且不記錄它)。
你認爲什麼人?