gpt4 book ai didi

asp.net-mvc - 在 MVC 上的 Application_BeginRequest 中重定向

转载 作者:行者123 更新时间:2023-12-05 05:28:42 26 4
gpt4 key购买 nike

我有一个多语言网站。当网站没有请求的语言时,我正试图更改为英语(包括 URL)。我想通过重定向到同一页面但更改 url 的语言来做到这一点。所以我添加了一个带有键“_Language”的资源,如果它处于事件状态,它会获取语言代码。例如,如果资源文件不存在或存在但尚未准备好,它将回退到其他语言。在 global.asax 中我有这段代码:

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。我已经将 url 与语言设置(从一开始)设置为英语时的 url 进行了比较,它们是相同的!为什么会这样?

最佳答案

多么愚蠢!我实际上是通过 POST 请求来做到这一点的 =(

关于asp.net-mvc - 在 MVC 上的 Application_BeginRequest 中重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8473937/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com