我想更改网站上的语言。我以为我可以使用Handler来做,所以下拉将用于http://domain.com/Handler.ashx?language=en-US,f.i。
因此,它调用具有以下代码的处理程序:
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());
但是当它返回时,Thread.CurrentThread.CurrentCulture被设置为pt-BR,这是初始值。
我的问题是:处理程序上的线程与加载内容的aspx页面不同?你会建议什么作为解决方法?
谢谢
答案 0 :(得分:1)
Response.Redirect()将HTTP重定向发送回用户的浏览器,然后浏览器向服务器发出另一个请求。这导致IIS处理一个全新的请求,因此,创建了一个新线程来处理此请求。
虽然我不建议使用处理程序来完成此操作,但如果切换到Server.Transfer,您的想法可能会起作用,因为Server.Transfer不使用Http重定向,而只是创建一个通过ASP.NET管道发送的新请求,都在同一个初始请求的上下文中。
希望有所帮助,