美文网首页dotNET
通过TopShelf将OwinSelfHost自宿主打包成服务

通过TopShelf将OwinSelfHost自宿主打包成服务

作者: HapplyFox | 来源:发表于2018-11-21 16:58 被阅读3次

    基于当前文章进行代码配置后可开始进行本文章学习
    用Owin Host实现脱离IIS跑Web API单元测试

    基于上述程序集开始编码

    安装Nuget包 Topshelf

    image.png

    新建Topshelf 所需的类

    Bootstrap.cs 是对Topshelf 发布的windows服务的开始[Start]和结束[Stop]接口所要做的事情

    image.png
        /// <summary>
        /// OWIN host
        /// </summary>
        public class Bootstrap : ServiceControl
        {
            private IDisposable webApp;
            public string Address { get; set; }
            public bool Start(HostControl hostControl)
            {
                try
                {
                    webApp = WebApp.Start<Startup>(Address);
                    return true;
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Topshelf starting occured errors.", ex);
                    return false;
                }
    
            }
    
            public bool Stop(HostControl hostControl)
            {
                try
                {
                    webApp?.Dispose();
                    return true;
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"Topshelf stopping occured errors.", ex);
                    return false;
                }
    
            }
        }
    

    Program.cs
    项目程序主文件,通过TopShelf将应用打包成windows服务的方法,

        class Program
        {
            static void Main(string[] args)
            {
                HostFactory.Run(x =>
                {
                    x.RunAsLocalSystem();
    
                    x.SetServiceName("HangfireSettings.Instance.ServiceName");
                    x.SetDisplayName("HangfireSettings.Instance.ServiceDisplayName");
                    x.SetDescription("HangfireSettings.Instance.ServiceDescription");
    
                    x.Service(() => new Bootstrap { Address = "http://localhost:9005/" });
                });
    
                Console.Read();
            }
        }
    

    程序运行后,只需要在地址栏输入 http://localhost:9005/,就可以访问网站
    输入http://localhost:9005/blogposts/1/comments,可以得到如下图所示内容

    image.png image.png

    上图所示内容就相当于是通过OwinSelfHost自宿主打包后的运行方法,我们不需要新建一个web项目,只需要通过控制台程序,安装OWIN自宿主包,对各内容进行配置后,启动程序,即可通过地址栏访问网络服务请求。
    更近一步的是将当前控制台打包成Topshelf服务,这样就可以保证后台运行。

    相关文章

      网友评论

        本文标题:通过TopShelf将OwinSelfHost自宿主打包成服务

        本文链接:https://www.haomeiwen.com/subject/vjnqqqtx.html