Question

Je veux changer la langue dans mon site. Je pensais que je pouvais le faire à l'aide d'un gestionnaire, de sorte que le menu déroulant pencherais pour http: / /domain.com/Handler.ashx?language=en-US , fi

Ainsi, il appelle le gestionnaire, qui a ce code:

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());

Mais quand il remonte, Thread.CurrentThread.CurrentCulture est réglé sur pt-BR, qui était la valeur initiale.

Ma question est: le fil sur le gestionnaire est différent de la page ASPX qui charge le contenu? Et que suggérez-vous comme un travail autour?

Merci

Était-ce utile?

La solution

Response.Redirect () envoie une redirection HTTP au navigateur de l'utilisateur, le navigateur fait alors une autre requête au serveur. Il en résulte IIS traitement d'une toute nouvelle demande et, par conséquent, un nouveau thread est créé pour gérer cette demande.

Bien que je ne recommanderais pas un gestionnaire pour ce faire, si vous passez à Server.Transfer, votre idée peut fonctionner comme Server.Transfer n'utilise pas mais crée Http Redirects simplement une nouvelle demande d'envoi par le pipeline ASP.NET , le tout dans le cadre de la même demande initiale.

Hope qui aide,

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top