<system.web> .net 核心中的全球化

Posted

技术标签:

【中文标题】<system.web> .net 核心中的全球化【英文标题】:<system.web> globalization in .net core 【发布时间】:2016-12-16 02:51:44 【问题描述】:

我一直在使用以下设置我以前的应用程序的web.config

<system.web>
  <globalization culture="en-AU" uiCulture="en-AU" />
</system.web>

现在在我的新 .net 核心项目中,我不知道如何将此设置放入 appsettings.json 文件中。

感谢您的帮助, 尼古拉

【问题讨论】:

【参考方案1】:

本地化在Startup class 中配置,可以在整个应用程序中使用。 AddLocalization 方法在ConfigureServices 中用于定义资源和本地化。然后可以在 Configure 方法中使用它。这里可以定义RequestLocalizationOptions,并使用UseRequestLocalization方法将其添加到堆栈中。

public void ConfigureServices(IServiceCollection services)

            services.AddLocalization(options => options.ResourcesPath = "Resources");

            services.AddMvc()
                .AddViewLocalization()
                .AddDataAnnotationsLocalization();

            services.AddScoped<LanguageActionFilter>();

            services.Configure<RequestLocalizationOptions>(
                options =>
                    
                        var supportedCultures = new List<CultureInfo>
                        
                            new CultureInfo("en-US"),
                            new CultureInfo("de-CH"),
                            new CultureInfo("fr-CH"),
                            new CultureInfo("it-CH")
                        ;

                        options.DefaultRequestCulture = new RequestCulture(culture: "en-US", uiCulture: "en-US");
                        options.SupportedCultures = supportedCultures;
                        options.SupportedUICultures = supportedCultures;
                    );

【讨论】:

谢谢。 :)【参考方案2】:

在ConfigureServices中加入这两行好像有你想要的效果:

public class Startup

    public void ConfigureServices(IServiceCollection services)
    

        System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-AU");
        System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-AU");

我尝试了批准的答案:首先它需要一个 LanguageActionFilter 类,它不是标准的 .net 核心类,然后它不能用于使用首选文化而不是系统的简单目的默认文化。

【讨论】:

以上是关于<system.web> .net 核心中的全球化的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET 成员资格

.net设置session过期时间

Asp.net: WebForm基础上构建Mvc的方法

授权 Asp.net web.config

ASP.NET Core TypeLoadException无法从程序集“System.Web”加载类型“System.Web.PreApplicationStartMethodAttribute”(

为 .NET Web 服务设置超时值