C# 如何控制HangFire中重复作业的CurrentCulture

C# 如何控制HangFire中重复作业的CurrentCulture,c#,asp.net-web-api2,owin,hangfire,currentculture,C#,Asp.net Web Api2,Owin,Hangfire,Currentculture,我正在用Owin在asp.net WebApi2解决方案中使用HangFire 1.6 服务器设置为一个区域性(da DK)-我无法更改此设置。我的应用程序必须使用另一个区域性(en-US)来正确解析它接收的文本数据。基本上,我只希望解决方案中的所有内容都使用此其他区域性,而不要在服务器上使用此区域性 在我的web.config中,我有: <system.web> <httpRuntime targetFramework="4.6.1" /> <gl

我正在用Owin在asp.net WebApi2解决方案中使用HangFire 1.6

服务器设置为一个区域性(da DK)-我无法更改此设置。我的应用程序必须使用另一个区域性(en-US)来正确解析它接收的文本数据。基本上,我只希望解决方案中的所有内容都使用此其他区域性,而不要在服务器上使用此区域性

在我的web.config中,我有:

<system.web>
    <httpRuntime targetFramework="4.6.1" />
    <globalization enableClientBasedCulture="false" culture="en-US" uiCulture="en-US"/>
</system.web>
因为存在异步方法,并且我希望所有线程开始共享web.config中指定的相同区域性

我也有一些经常性的工作在HangFire中运行

我的问题是,无论我做什么,重复性作业都只是继续使用服务器区域性(da DK)作为CurrentCulture(CurrentUICulture似乎对我所做的事情做出反应:

我已经搜索了Hangfire文档等,但我没有找到任何可以解决这个问题的方法。我宁愿避免在重复性工作中使用的每个方法的顶部硬编码一种文化

希望有人能帮我

后续行动(2017-11-21):

原来这与HangFire无关。显然,
CultureInfo.CurrentCulture
在运行
Startup.Configuration
时未设置为web.config中提供的值,因此
CultureInfo.DefaultThreadCurrentCulture
在此处设置为错误值。一旦控制器执行,这些值将设置为版本在web.config中


目前,我已决定在Startup类中硬编码区域性,以确保在执行任何Hangfire定期作业之前已将其设置为DefaultThreadCurrentCulture

如果您使用的是SqlServer,则Hangfire.JobParameter表中显示的内容将作为作业的CurrentCulture和CurrentUICulture(如果你正在使用redis,直接在作业条目上)?@jbl:我相信你所指的值与你在HangFire仪表板上查看作业时所显示的值相同。无论如何,我看到他们所有人在当前UICulture中都有en-US(我认为他们应该有),而他们中的大多数人都有da-DK(他们不应该有)在CurrentCulture中。但是,有一些确实将en US作为CurrentCulture。似乎没有关于工作人员何时将en US作为CurrentCulture的模式。这可能来自将作业排队的客户端。无论如何,作为第一次尝试,您可以从全局筛选器中删除CaptureCultureAttribute:然后提供您自己的、硬编码的en-us值,
        CultureInfo.DefaultThreadCurrentCulture = CultureInfo.CurrentCulture;
        CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.CurrentUICulture;