OwinMiddleware不保留.net 4.6中的文化变化.*

Boa*_*ler 4 asp.net-mvc cultureinfo owin owin-middleware .net-4.6

我有一个非常好的owin文化中间件.

它只是根据网址改变文化.这完全适用于4.5.*.现在当runtiome更改为4.6.1时,文化不再保留,因此它不起作用.

我可以在一个非常简单的解决方案中重现它,只有这个中间件模拟文化变化

public class CultureMiddleware : OwinMiddleware
{
    public CultureMiddleware(OwinMiddleware next)
        : base(next)
    {
    }

    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);
    }
}
Run Code Online (Sandbox Code Playgroud)

我将中间件附加到它执行的管道但是当我调用一个动作时,控制器没有文化(就像在.net 4.5.1中那样)

我已经在这里发布了,但支持非常慢.每两周一次回答然后看起来他们没有尝试过他们写的东西:-(

https://connect.microsoft.com/VisualStudio/feedback/details/2455357

Boa*_*ler 7

我收到了微软的回复,对我有用.

您可以尝试在web.config文件中设置以下元素.该元素必须是<appSettings>元素的子元素.

<add key="appContext.SetSwitch:Switch.System.Globalization.NoAsyncCurrentCulture" value="true" />
Run Code Online (Sandbox Code Playgroud)