如何为ASP.NET 5应用程序设置区域设置?

Sam*_*Sam 3 c# asp.net locale asp.net-core

我正在尝试对ASP.NET 5 Web应用程序的主机区域设置进行全面覆盖.大多数解决方案都引用<globalization/>web.config元素,但这是特定于IIS的,并且似乎不适合新的ASP.NET模型.

我试过了:

app.Use(next => context => {
    Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-AU");
    Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en-AU");
    return next(context);
});
Run Code Online (Sandbox Code Playgroud)

这会被执行,但这似乎对请求没有任何影响(可能是由于Task管道中的大量内容?)有没有更好的方法来实现这一点?

Mar*_* PM 7

问题出在异步控制器上.您应该将默认文化设置为所有线程:

app.Use(next => context => {
    CultureInfo.DefaultThreadCurrentCulture = CultureInfo.GetCultureInfo("en-AU");
    CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.GetCultureInfo("en-AU");

    return next(context);
});
Run Code Online (Sandbox Code Playgroud)

实际上,您可以将这些行放在Configure方法的顶部:

CultureInfo.DefaultThreadCurrentCulture = CultureInfo.GetCultureInfo("en-AU");
CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.GetCultureInfo("en-AU");
Run Code Online (Sandbox Code Playgroud)


agu*_*ars 5

本地化还没有准备好,ASP.NET 5但是你可以看看Damian Edwards的github上的内容

更新 2015年7月21日,星期二
本地化将在beta6.请参阅路线图

更新 2015年12月27日

现在可以进行本地化,我们在aspnet/Localization中有样本