在Hangfire中禁用PreserveCultureAttribute

时间:2016-08-01 04:02:27

标签: c# hangfire

我正在尝试使用Hangfire使用MS Bot Framework向用户发送预定消息。但是,所有计划的作业都失败了:

{{1}}

Hangfire文档说这是由于文化保留和“它是由PreserveCultureAttribute类完成的,默认情况下应用于所有方法。”

http://docs.hangfire.io/en/v1.1.0/features.html?highlight=preservecultureattribute

如何在Hangfire中禁用PreserveCultureAttribute,以便它不会将其应用于我的方法?

2 个答案:

答案 0 :(得分:1)

  

如何禁用Hangfire中的PreserveCultureAttribute以使其不会应用于我的方法?

我不确切知道如何禁用它,但您可以使用[PreserveCulture]属性。根据您发布的例外,我认为文化代码是错误的。检查此link以获取正确的文化代码。香港的文化代码应为zh-HK

Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("zh-HK");
BackgroundJob.Enqueue(() => NotifyNewComment(model.Id));

[PreserveCulture]
public static void NotifyNewComment(int commentId)
{
    var currentCultureName = Thread.CurrentThread.CurrentCulture.Name;
    if (currentCultureName != "zh-HK")
    {
        throw new InvalidOperationException(String.Format("Current culture is {0}", currentCultureName));
    }
}

参见参考https://github.com/HangfireIO/Hangfire/issues/77

我希望这会对你有所帮助。

答案 1 :(得分:0)

您可以删除以下默认过滤器:

var filter = GlobalJobFilters.Filters.Where(x => x.Instance is CaptureCultureAttribute).Single().Instance;
GlobalJobFilters.Filters.Remove(filter);