我有一个ASP.NET MVC4应用程序。我使用ninject进行DI和WebActivator来设置环境。
在Start方法中,System.Globalization.CultureInfo.CurrentCulture从web.config中正确读取为“es-DO”,这是声明的语言环境:
public static void Start()
{
DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule));
DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));
Bootstrapper.Initialize(CreateKernel);
}
在我设置路由和缩小包的PostStart方法中,语言环境变为“en-US”。我假设是默认语言环境
public static void PostStart()
{
ValidationSettings.UnobtrusiveValidationMode = UnobtrusiveValidationMode.None;
RouteConfig.RegisterRoutes();
GlobalFilterConfig.RegisterFilters();
BundleConfig.RegisterBundles(BundleTable.Bundles);
AuthConfig.RegisterAuth();
}
有谁知道为什么会这样? BundleConfig.RegisterBundles方法依赖于Culture信息来加载相应的javascript文件。
答案 0 :(得分:0)
我们这样修理:
//Hack to set the culture again to the one defined on the web.config
var config = WebConfigurationManager.OpenWebConfiguration("/");
var section = (GlobalizationSection)config.GetSection("system.web/globalization");
if(section != null)
{
Thread.CurrentThread.CurrentCulture = new CultureInfo(section.Culture);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(section.UICulture);
}