이를 달성하는 방법에 대한 전체 예 ...
using System
using Core.Services;
using System.Threading.Tasks;
using System.Web.Hosting;
public interface IISHostedProcessService : IRegisteredObject, IDisposable
{
Task Start();
}
public class CoreHostedProcess : IISHostedProcessService
{
protected bool running;
public CoreHostedProcess()
{
}
public virtual Task Start()
{
return Task.Run(() =>
{
running = true;
HostingEnvironment.RegisterObject(this);
});
}
public virtual void Stop(bool immediate)
{
running = false;
HostingEnvironment.UnregisterObject(this);
}
public virtual void Dispose()
{
}
}
확인 핵심 물건 정의 된 사용자들은, 이제 우리는 일정에 따라 음과 같은 실행 작업 유용한 일을 할 수있는 호스팅 프로세스를 정의 ...
고급 설정은 응용 프로그램을 보장하기 위해, true로 "프리로드 가능"으로 설정 응용 프로그램 내에서 호스팅 프로세스를 사용하는 지금 확인
using log4net;
using System.Threading.Tasks;
using System.Timers;
using System;
using Core.Utilities.Objects.Entities;
using System.Linq;
using System.Net.Http;
using Core.Objects;
using Ninject;
public class TaskScheduler : CoreHostedProcess
{
static readonly ILog log = LogManager.GetLogger(typeof(TaskScheduler));
Timer timer = new Timer(60000);
IKernel kernel;
public TaskScheduler(IKernel kernel) : base()
{
this.kernel = kernel;
}
async void RunTasks(object sender, ElapsedEventArgs e)
{
//TODO: write code to fetch tasks and run them
}
public override async Task Start()
{
log.Info(" Initialising Task Scheduler.");
timer.Elapsed += RunTasks;
RunTasks(null, null);
timer.Start();
await base.Start();
}
public override void Stop(bool immediate)
{
log.Info(" Stopping Task Scheduler.");
timer.Stop();
base.Stop(immediate);
}
}
... IIS에서
은 후 서버에로드 된 상태로 유지 초기 하중.
예를 들어, 응용 프로그램로드 오래된 학교 글로벌 asax 파일에/owin 사용하는 경우는 다음을 추가 할 수 있습니다
...
public class Startup
{
static readonly ILog log = LogManager.GetLogger(typeof(Startup));
public static IKernel Kernel { get; private set; }
static List<IISHostedProcessService> hostedProcesses = new List<IISHostedProcessService>();
public void Configuration(IAppBuilder app)
{
hostedProcesses.Add(new TaskScheduler());
}
}
지금 당신은 당신이 모두 정의하고 TaskScheduler를 초기화하는데 필요로하는 모든 것을 갖추고 있어야 IIS에서 호스팅되는 C# 응용 프로그램 내에서 EDF 관리 데이터베이스의 맨 위에있는 OData를 사용하여 작업 데이터를 관리하기위한 API를 만들었 기 때문에 CRUD가 시스템의 작업 집합을 관리 할 수있었습니다.
배포 한 후 IIS 응용 프로그램을 중지 할 때까지 단순히 IIS에 요청을 보내서 IIS를 실행 한 상태로 유지하므로 (호스트 된 프로세스가 계속 실행 됨) 응용 프로그램을 한 번 이상 실행해야한다고 생각합니다. 프로세스를 호스팅합니다.
응용 프로그램이 중지되면 호스트 된 프로세스의 "등록을 취소하고"이를 서버에 폐기하여 호스트 된 프로세스를 IIS 응용 프로그램 수명주기에 연결하는 호스트 된 프로세스에서 Stop 메서드가 호출됩니다.
나는 OData와 EF 코드를 게시하는 것이 너무 많을 것이라고 생각했다. 잘하면이해야합니다.
출처
2017-03-18 20:48:57
War