2
我有一個多語言站點。當網站沒有所需的語言時,我正在嘗試更改爲英文(包括網址)。我想通過重定向到相同的頁面來改變網址的語言。所以我添加了一個關鍵字「_Language」的資源,如果它是活動的,它將獲得語言代碼。例如,如果資源文件不存在,或者它沒有準備好,它將回退到某種其他語言。在Global.asax我有這樣的代碼:在MVC上的Application_BeginRequest中重定向
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"DefaultLang", // Route name
"{language}/{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
new { language = "^[a-z]{2}$" } // Get language
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Cuenta", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
public static string Language
{
get
{
var currentContext = new HttpContextWrapper(HttpContext.Current);
var routeData = RouteTable.Routes.GetRouteData(currentContext);
if (routeData != null)
{
var lang = (string)routeData.Values["language"];
if (lang != null && lang.Length == 2)
return lang.ToLower();
}
return "es";
}
}
protected void Application_BeginRequest(object sender, EventArgs e)
{
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(MvcApplication.Language);
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(MvcApplication.Language);
if (Texts._Language != MvcApplication.Language) // Detect fallback.
{
Response.Redirect(Request.Url.AbsoluteUri.Replace("/" + MvcApplication.Language + "/", "/en/"));
Response.End();
return;
}
}
我的問題是,每次某種原因,用戶被重定向的BeginRequest響應它的一個404,我比較了一個當網址語言設置(從頭開始)英文,他們是一樣的!這是爲什麼發生?