【问题标题】:Using Quartz in a Nancyfx project. Do not have global.asax where start schedule?在 Nancyfx 项目中使用 Quartz。没有 global.asax 从哪里开始计划?
【发布时间】:2017-02-01 14:38:16
【问题描述】:

我有一个非常简单的时间表和一份使用 Quartz 的工作,当我不使用 nancyfx 并且我的 global.asax 中有 MySchedule.Start() 时,它工作正常。我在一个使用 nancyfx 和 bootstrapper.cs 的单独 MVC 项目中尝试了相同的工作相同的计划,但我不确定在哪里运行 MySchedule.Start()

我在引导程序中尝试过,但没有成功:

public class Bootstrapper : DefaultNancyBootstrapper
{
    protected override void ApplicationStartup(Nancy.TinyIoc.TinyIoCContainer container, Nancy.Bootstrapper.IPipelines pipelines)
    {
        base.ApplicationStartup(container, pipelines);
        MySchedule.Start();
    }

}

【问题讨论】:

  • 为什么将 ASP.NET MVC 与 NancyFX 一起使用? Nancy 已经是您的 C# 应用程序的 API 层。我更喜欢创建一个控制台应用程序,在 main 中使用 topshelf 并在启动服务的同时启动 nancy(自主机)和石英作业。

标签: asp.net-mvc quartz-scheduler nancy bootstrapper


【解决方案1】:

应用程序启动仅在调用任何 NancyFx 路由时运行,这意味着您的调度程序仅在收到对 api 的请求后才会启动。我建议使用 Owin 并将调度程序的启动放在 StartUp.cs 类中,这将为您提供等效的 Global.asax。

【讨论】:

  • 我试过了,但似乎没有用:public static void Configuration(IAppBuilder app){ MySchedule.Start(); }
  • 两个参考:Install-Package Microsoft.Owin.Host.SystemWeb Install-Package Microsoft.AspNet.WebApi.OwinSelfHost
  • 好吧,我修好了..你需要 Own:AutomaticAppstart 在配置中。
猜你喜欢
  • 2013-09-01
  • 2012-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多