yavsc/YaDaemon/Program.cs

88 lines
2.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.ServiceProcess;
using System.Threading.Tasks;
using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Hosting;
using Microsoft.AspNet.Hosting.Internal;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Framework.Configuration;
using Microsoft.Framework.ConfigurationModel;
using Yavsc;
public class Program : ServiceBase
{
private readonly EventLog _log =
new EventLog("Application") { Source = "Application" };
private readonly IServiceProvider _serviceProvider;
private IHostingEngine _hostingEngine;
private IDisposable _shutdownServerDisposable;
private static Program instance;
public Program(IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider;
instance = this;
}
// Fails claming "use mono-service" :
// public static void Main(string[] args) => YaDaemon.YaDaemon.Main(args);
public static void Main(string[] args) => YaDaemon.YaDaemon.Main(args);
// public static void Main(string[] args) => Console.WriteLine("Hello World!");
public void OldMain(string[] args)
{
Microsoft.Extensions.PlatformAbstractions.IApplicationEnvironment iappenv;
IHostingEnvironment env = new Microsoft.AspNet.Hosting.HostingEnvironment();
iappenv = null;// new HostingEnvironmentExtensions();
Console.WriteLine("HW");
_log.WriteEntry("Test from MyDnxService.", EventLogEntryType.Information, 1);
#if DEBUG
OnStart(null);
#else
Run(this);
#endif
}
protected override void OnStart(string[] args)
{
/* TODO how to use configSource
var configSource = new MemoryConfigurationSource();
configSource.Add("server.urls", "http://localhost:5000");
configSource.Load();
*/
var configBuilder = new ConfigurationBuilder();
configBuilder.AddInMemoryCollection();
configBuilder.SetBasePath("../Yavsc/");
configBuilder.AddJsonFile("../Yavsc/project.json");
var config = configBuilder.Build();
var builder = new WebHostBuilder();
builder.UseServer("Microsoft.AspNet.Server.Kestrel");
builder.UseServices(services => services.AddMvc());
builder.UseStartup(appBuilder =>
{
appBuilder.UseDefaultFiles();
appBuilder.UseStaticFiles();
appBuilder.UseMvc();
});
_hostingEngine = builder.Build();
// Microsoft.AspNet.Hosting.WebApplication.Run<Startup>(args);
_shutdownServerDisposable = _hostingEngine.Start();
}
}