Pregunta

Quiero cambiar el idioma en mi página web. Pensé que podía hacerlo usando un manipulador, por lo que el menú desplegable iría por http: / /domain.com/Handler.ashx?language=en-US , fi

Por lo tanto, se llama al controlador, que tiene este código:

string selectedLanguage = context.Request.QueryString["language"];

    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(selectedLanguage);
    Thread.CurrentThread.CurrentUICulture = new CultureInfo(selectedLanguage);

    context.Response.ContentType = "text/plain";
    context.Response.Write("Hello World");

    context.Response.Redirect(context.Request.UrlReferrer.AbsoluteUri.ToString());

Pero cuando se va hacia atrás, Thread.CurrentThread.CurrentCulture se establece en pt-BR, que era el valor inicial.

Mi pregunta es: la rosca en el Handler es diferente de la página aspx que carga el contenido? Y ¿qué sugiere usted como un trabajo alrededor?

Gracias

¿Fue útil?

Solución

Response.Redirect () envía una redirección HTTP al navegador del usuario, el navegador y luego hace otra petición al servidor. Esto se traduce en el manejo de una solicitud de IIS completamente nuevo y, por lo tanto, un nuevo hilo está creado para manejar esta solicitud.

A pesar de que no recomendaría un controlador de lograr esto, si se cambia a Server.Transfer, su idea podría funcionar, como Server.Transfer no utiliza redirecciones HTTP, sino que simplemente crea una nueva solicitud para enviar a través de la canalización de ASP.NET , todo dentro del contexto de la misma solicitud inicial.

Espero que ayude,

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top