ビルド中のWebアプリケーションのバックグラウンドタスクを実行する必要があります。私はを使用してサーバー上でサービスを実行する様子が気に入っています。私はサービスを初期化する最善の方法を考えていました。MVC WebアプリケーションでTopShelfを実行しています
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
InitService();
}
private void InitService()
{
Task.Factory.StartNew(() => HostFactory.Run(x =>
{
x.Service<TestService>(s =>
{
s.SetServiceName("TestService");
s.ConstructUsing(
name => new TestService());
s.WhenStarted(ts => ts.Start()); s.WhenStopped(ts => ts.Stop());
});
x.RunAsLocalSystem();
x.SetDescription("Sample test service");
x.SetDisplayName("Test display name");
x.SetServiceName("Test service name");
}));
}
は明らかにアプリケーションを起動するジョブは、自身のタスクで実行されます。たとえば
を起動MVCアプリケーションからサービスを開始するには悪い考えだろうかと思いまして。 これを行うより良い方法はありますか?これに問題がありますか?
私の考えは、サービスが開始されると、それ以降は自分自身を処理するということです。
あなたのWebアプリケーションを何度も再起動しても、サービスが既に実行されていれば別のものを起動しないでください
+1最後に、私はこのアプローチのために最終的に行きました。ありがとうございました。 – Mike