Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Owin CultureInfo&;AspNetSynchronizationContext_C#_Asp.net Mvc_Asp.net Web Api_Async Await_Owin - Fatal编程技术网

C# Owin CultureInfo&;AspNetSynchronizationContext

C# Owin CultureInfo&;AspNetSynchronizationContext,c#,asp.net-mvc,asp.net-web-api,async-await,owin,C#,Asp.net Mvc,Asp.net Web Api,Async Await,Owin,net应用程序,它同时使用Mvc(5.2.3)和WebApi(2.2)。现在,我的应用程序是由owin启动类(Global.asax已被删除)构建和初始化的,安装了包Microsoft.owin.Host.SystemWeb 以前,在Global.asax时代,我通过按cookie或AcceptLanguage标头获取区域性并设置Thread.CurrentThread.CurrentCulture=new CultureInfo(langSelectedValue)来设置当前请求区域性,即使对

net应用程序,它同时使用Mvc(5.2.3)和WebApi(2.2)。现在,我的应用程序是由owin启动类(Global.asax已被删除)构建和初始化的,安装了包Microsoft.owin.Host.SystemWeb

以前,在Global.asax时代,我通过按cookie或AcceptLanguage标头获取区域性并设置Thread.CurrentThread.CurrentCulture=new CultureInfo(langSelectedValue)来设置当前请求区域性,即使对于CurrentUiCulture也是如此

现在,由于my Global.asax已去世,将安装程序保留在Startup.cs中,因此模拟先前区域性设置的代码位于

app.Use(async (env, next) => {
var langCookie = env.Request.Cookies["cultureName"];
if (langCookie != null && GlobalizationHelper.IsValidCultureCode(langCookie))
{
    Thread.CurrentThread.CurrentCulture = new CultureInfo(langCookie);
    Thread.CurrentThread.CurrentUICulture = new CultureInfo(langCookie);
}
await next();
})
问题很明显,所有异步请求都会在线程区域性中丢失。我尝试了许多解决方案:

  • owin全球化模块,但它不适合我,我不想更改基于属性的路由
  • 用于保留和应用区域性的synchronizationcontext,但webapi/mvc堆栈即使我设置了自己的synchronizationcontext,也会继续使用AspNetSynchronizationContext
  • WithCulture()扩展方法具有自定义的区域性等待器,但未执行任何操作
  • 我非常感谢任何关于应用CultureInfo并将其保存在Owin异步应用程序中的建议


    提前感谢

    我相信您需要为此升级到.NET 4.6。我已经完成了,我的解决方案现在完全在.NET 4.6上,但问题仍然在于您的?当然!这是我检查的第一件事…你能解决它吗?在我的例子中,它在4.5.1中起作用,但自从升级到4.6之后,它就不再起作用了。。。。