【发布时间】:2018-05-31 08:20:40
【问题描述】:
所以我试图让我的应用程序每分钟向一个文本文件发送一个字符串,所以在我的 Global.asax.cs 文件中我有这个设置:
public class Startup
{
public void Configuration(IAppBuilder app)
{
GlobalConfiguration.Configuration
.UseSqlServerStorage("AppContext");
app.UseHangfireDashboard();
app.UseHangfireServer();
}
}
public class HeartbeatSetup
{
public static void Heartbeat()
{
var config = new NLog.Config.LoggingConfiguration();
var logFile = new NLog.Targets.FileTarget() { FileName = "heartbeat.txt", Name = "logfile" };
config.LoggingRules.Add(new NLog.Config.LoggingRule("*", LogLevel.Trace, logFile));
NLog.LogManager.Configuration = config;
var logger = NLog.LogManager.GetCurrentClassLogger();
var currentTime = DateTime.Now.ToString();
RecurringJob.AddOrUpdate("heartbeat", () => logger.Trace("Test"), Cron.Minutely);
}
}
所以这创建作业正常并每分钟运行一次,但作业未完成并引发以下错误:
没有为此对象定义无参数构造函数
有没有人对此有解决方案或替代方法?
【问题讨论】:
-
替代方案是使用适当的 pub-sub 而不是 Hangfire。但是,如果 Hangfire 是您的唯一选择,那么您可以尝试将调用的内容(通过创建和配置记录器)包装为不带任何参数的公共静态方法。还可以看看 Hangfire 如何在 SqlServer 表中存储已注册的委托。这可能会为您提供有关什么是可运行的 Hangfire 调用目标的线索
标签: c# asp.net-mvc logging nlog hangfire