0

我有一个 REST 服务,可以生成带有货币和日期的字符串消息,因此我需要设置正确的文化。消息是在异步操作之间运行的不同步骤中生成的。

Accept-Language如果在 Web.config 中配置了此类功能,Web API 将在标头中设置文化:

<globalization enableClientBasedCulture="true" uiCulture="auto" culture="auto" />

经过一些测试,Web API 以这种方式获得的文化似乎在 async/await 操作中是一致的。我想知道它在自我托管时是否会表现得一样......

但是,我想知道如何以SynchronizationContext在主机使用中正确流动的方式任意更改请求的文化。我认为这应该是可能的,因为正如我所说,从Accept-Language使用的标题中获得的那个enableClientBasedCulture="true"似乎流动正确。

例如,AspNetSynchronizationContext流经HttpContext.Current,因此如果Thread.CurrentThread.CurrentCulture和/或被Thread.CurrentThread.CurrentUICulture操纵,他们的文化可能会在await. 所以这种方式对于 async/await 是不安全的。

我正在寻找的不是来自 Stephen Toub 的文化等待者,而是强制 Web API 将请求的文化更改为其他内容的方式。

我尝试使用委托处理程序,更改Accept-Language请求消息中的 ,但似乎为时已晚,并且对Thread.CurrentThread.CurrentCulture和/或没有影响Thread.CurrentThread.CurrentUICulture

有没有办法以安全的异步/等待方式做到这一点?

4

0 回答 0