gpt4 book ai didi

ASP.NET 中间件不再保留文化

转载 作者:行者123 更新时间:2023-12-04 15:41:57 27 4
gpt4 key购买 nike

给定

带有 mvc 5.2.3 和 .net 4.6.1 的 asp.net 4

我想根据一些与主机相关的请求来更改 CurrentCulture 支持全局化。

设置文化的 Owin 中间件。

产生以下行为的简化版本:

 public override async Task Invoke(IOwinContext context)
{
var culture = new CultureInfo("es-ES");
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture;

CultureInfo.CurrentCulture = culture;
CultureInfo.CurrentUICulture = culture;


await Next.Invoke(context);
}

问题 :

文化未被保留 例如,Web Controller 没有在中间件中设置的文化。

这似乎与线程文化保留问题无关。当只调用一些方法并等待它们时,文化得以保留。

尽管在 4.5.1 中它可以工作。 (我已经在其他项目中以这种方式使用过)
当我像这样更改 httpRuntime 版本时:
<httpRuntime targetFramework="4.5.1" />

一切都像一个魅力。

我找不到任何记录在案的重大更改。任何提示?
我可以用一个空的新 ASP 项目重现它
有什么建议吗?

增加项。

这个问题是 不是 与线程上的文化保存有关,因为这很好用!
       CultureInfo.CurrentCulture = new CultureInfo("en-GB");
await Foo();
Debug.WriteLine(Thread.CurrentThread.CurrentCulture);// Works is en-gb
}

private Task Foo()
{
Debug.WriteLine(Thread.CurrentThread.CurrentCulture);// Works is en-gb
return Task.FromResult(true);
}

最佳答案

article看起来像你需要的。

您是否在使用 app.UseRequestLocalization();在配置方法中?

更新

看看这个 module .我已经下载了示例并且它可以工作(您必须更新一些 nuget 包才能构建它。)该示例通过在 url 中提供区域性来工作,但可以配置。这适用于 .NET 4.6.1。

关于ASP.NET 中间件不再保留文化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35910161/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com