0

我想更改我网站的语言。我以为我可以使用处理程序来完成,所以下拉菜单会指向 http://domain.com/Handler.ashx?language=en-US,fi

因此,它调用具有以下代码的处理程序:

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 页面不同?你会建议什么作为解决方法?

谢谢

4

1 回答 1

1

Response.Redirect() 将 HTTP 重定向发送回用户的浏览器,然后浏览器向服务器发出另一个请求。这会导致 IIS 处理一个全新的请求,因此会创建一个新线程来处理此请求。

虽然我不建议使用处理程序来完成此操作,但如果您切换到 Server.Transfer,您的想法可能会奏效,因为 Server.Transfer 不使用 Http 重定向,而只是创建一个新请求以通过 ASP.NET 管道发送,所有这些都在相同初始请求的上下文。

希望有帮助,

于 2009-08-20T17:27:43.920 回答