Слово, которое нужно сказать. Это лучшее сообщество .NET когда-либо. Так держать!
В последнее время у меня возникла проблема: мне удалось найти для нее 2 решения, и мне интересно, какое из них выбрать.
Вот вопрос:
Когда пользователь запрашивает мой сайт (www. .com), я собираюсь перенаправить его на (www. .com / en), потому что это многоязычный сайт.
Я использую .NET маршрутизацию к этому.
В Page_Load страницы default.aspx я проверяю, доступен ли язык из коллекции маршрутизации, я не перенаправляю. Если он недоступен, я перенаправляю на (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, и я думаю, что это не очень хорошо для сайта (я могу его поймать и не регистрировать).
Что вы думаете, ребята?