【发布时间】:2010-08-22 16:13:47
【问题描述】:
有句话要说。这是有史以来最好的 .NET 社区。继续加油!
我最近遇到一个问题,我设法为它提供了 2 个解决方案,我想知道我应该选择哪一个。
问题在这里:
当用户请求我的网站 (www..com) 时,我会将他重定向到 (www..com/en),因为它是一个多语言网站.
我正在使用 .NET 路由到那个。
在 default.aspx 页面的 Page_Load 中,我检查路由集合中的语言是否可用,我不重定向。如果它不可用,我会重定向到 (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 来做到这一点。现在,如果我将方法参数设置为 End The Response,它将抛出一个异常,以便我可以通过它来处理它
try
{
this.InitializeLayout();
}
catch (ThreadAbortException ex)
{
}
catch (Exception ex)
{
ExceptionManager.LogException(ex);
}
如果我不结束响应,页面将执行整个生命周期,重定向,然后再次执行,这会导致页面的双重执行。
我的主要目标不是执行页面 2 次以最小化处理(如果网站受到大流量的冲击)。如果我结束响应,将抛出 ThreadAbortExeption,我认为这对站点不利。(我可以捕获它而不记录它)。
你们怎么看?
【问题讨论】: