从web.config获取声明Culture的错误

时间:2012-09-09 21:50:53

标签: asp.net-mvc localization

我有一个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文件。

1 个答案:

答案 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);
        }