我在本地计算机上调试时遇到自定义文化问题。我有一个网站,内部与外部用户有一个单独的resx文件(术语不同)
我们使用自定义区域en-GB-external和相关resx实现此目的。内部客户端将使用en-GB resx文件。
在调试时,在一台PC上,我只获取en-GB.resx文件,而不是en-GB-internal.resx文件。但是,如果我构建代码并将其放在服务器上,并从同一台PC浏览它的工作原理。
如果我在另一台PC上调试相同的代码(从svn检出),它可以正常工作。
在一台PC上进行调试时,我甚至可以从哪里开始查看为什么这不起作用?
答案 0 :(得分:0)
也许检查IE的文化设置。
答案 1 :(得分:0)
我们遵循msdn实现自定义文化的例子。但是,我们会尽可能在页面生命周期的早期切换文化。通过让不同的用户登录2个不同的页面来解决上述问题。然后我们覆盖InitializeCulture:
protected override void InitializeCulture()
{
SetCulture("en-GB-Internal");
base.InitializeCulture();
}
public void SetCulture(string nameOfCulture)
{
CreateCultureCookie(nameOfCulture);
SetCurrentThreadCultureFromCultureCookie();
}
public void CreateCultureCookie(string name)
{
CultureInfo culture = new CultureInfo(name);
HttpCookie cultureCookie = new HttpCookie("CultureCookie", culture.Name);
cultureCookie.Expires = DateTime.Now.AddDays(30);
AddCookie("CultureCookie", cultureCookie);
}
private void SetCurrentThreadCultureFromCultureCookie()
{
if (Request.Cookies["CultureCookie"] != null && Request.Cookies["CultureCookie"].Value != null)
{
CultureInfo culture = new CultureInfo(Request.Cookies["CultureCookie"].Value);
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture;
}
}