我正在尝试使用Hangfire使用MS Bot Framework向用户发送预定消息。但是,所有计划的作业都失败了:
{{1}}
Hangfire文档说这是由于文化保留和“它是由PreserveCultureAttribute类完成的,默认情况下应用于所有方法。”
http://docs.hangfire.io/en/v1.1.0/features.html?highlight=preservecultureattribute
如何在Hangfire中禁用PreserveCultureAttribute,以便它不会将其应用于我的方法?
答案 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);