透過TopShelf將OwinSelfHost自宿主打包成服務

jerrysun發表於2021-09-09

基於上述程式集開始編碼

安裝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 = "" });
            });

            Console.Read();
        }
    }

程式執行後,只需要在位址列輸入 ,就可以訪問網站
輸入blogposts/1/comments,可以得到如下圖所示內容

圖片描述

image.png

圖片描述

image.png

上圖所示內容就相當於是透過OwinSelfHost自宿主打包後的執行方法,我們不需要新建一個web專案,只需要透過控制檯程式,安裝OWIN自宿主包,對各內容進行配置後,啟動程式,即可透過位址列訪問網路服務請求。
更近一步的是將當前控制檯打包成Topshelf服務,這樣就可以保證後臺執行。



作者:HapplyFox
連結:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/151/viewspace-2820774/,如需轉載,請註明出處,否則將追究法律責任。

相關文章