我有一个REST服务,可以生成包含货币和日期的字符串消息,因此我需要设置正确的文化。消息是在异步操作之间运行的不同步骤中生成的。
如果在Web.config中配置了此功能,Web API将设置Accept-Language
标头中的文化:
<globalization enableClientBasedCulture="true" uiCulture="auto" culture="auto" />
经过一些测试后,似乎Web API以这种方式获得的文化在异步/等待操作中是一致的。我想知道在自我主持人身上它是否会表现得一样......
但是,我想知道如何以在主机使用的SynchronizationContext
中正确流动的方式任意改变请求的文化。我认为这应该是可能的,因为正如我所说,使用Accept-Language
从enableClientBasedCulture="true"
标题中获取的那个似乎正确地流动。
例如,AspNetSynchronizationContext
将其引导至HttpContext.Current
,因此如果Thread.CurrentThread.CurrentCulture
和/或Thread.CurrentThread.CurrentUICulture
被操纵,其文化可能会在await
之后发生变化。所以这种方式对于async / await来说并不安全。
我正在寻找的不是culture awaiter from Stephen Toub,而是强制Web API将请求的文化更改为其他内容的方式。
我尝试过委托处理程序,更改了请求邮件中的Accept-Language
,但似乎为时已晚,对Thread.CurrentThread.CurrentCulture
和/或Thread.CurrentThread.CurrentUICulture
没有任何影响。
有没有办法以安全的异步/等待方式执行此操作?