91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何利用Topshelf把.NET Core Generic Host管理的應用程序部署為Windows服務

發布時間:2021-11-18 17:10:20 來源:億速云 閱讀:123 作者:柒染 欄目:大數據

本篇文章為大家展示了如何利用Topshelf把.NET Core Generic Host管理的應用程序部署為Windows服務,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

官方文檔只提供了一個《在 Windows 服務中托管 ASP.NET Core》的方案,可以使用Microsoft.AspNetCore.Hosting.WindowsServices類庫來把Web應用部署為Windows服務。但是ASP.NET Core雖然是控制臺程序,但是它本身是使用了含有HTTP管道的Web Host來負責應用程序的生命周期管理,用它來作為定時任務的話,會有很多不必要的工作負載,例如占用端口、增加了很多依賴等等。

官方意識到這個問題之后,在.NET Core 2.1版本新增了Generic Host通用主機,剝離了原來WebHost的Http管道相關的API,源碼中可以發現Web Host已經基于Generic Host實現。它才是作為純粹定時任務程序的最佳拍檔。

但是由于Generic Host本身非常簡單,用它運行的程序設置在注冊為Windows服務啟動之后會自動停止。研究很久之后才知道,想在Windows上啟動服務,還是不能像Linux上那么簡單——

于是嘗試結合Topshelf來創建Windows服務,最終成功了。

1實現方法

  1. 先實現IHostLifetime接口來接管應用程序的生命周期,其實就是用空的實現來替換掉默認的ConsoleLifetime,這樣就可以在之后由Topshelf框架內部去管理生命周期。



    如何利用Topshelf把.NET Core Generic Host管理的應用程序部署為Windows服務

  2. 然后實現IHostedService接口,把后臺任務邏輯寫到StartAsync方法中,參見官方文檔《在 ASP.NET Core 中使用托管服務實現后臺任務》,本文示例使用定時寫入文本到一個文件來測試定時任務是否成功運行。


    如何利用Topshelf把.NET Core Generic Host管理的應用程序部署為Windows服務

  3. 構建Generic Host,在ConfigureServices方法中注冊TopshelfLifetime,并且注冊一個托管服務FileWriterService,就能完成Generic Host的簡單構建,當然完整的項目應該還包含配置、日志等等。最后,使用Topshelf來接管Generic Host,創建Windows服務。


    如何利用Topshelf把.NET Core Generic Host管理的應用程序部署為Windows服務

  4. 最后發布應用程序,并安裝到Windows服務。

以管理員權限開啟終端,執行命令:

如何利用Topshelf把.NET Core Generic Host管理的應用程序部署為Windows服務

這樣這個Windows服務就啟動了!查看輸出文件,可以看到定時寫入成功,服務也一直沒關閉~

如何利用Topshelf把.NET Core Generic Host管理的應用程序部署為Windows服務

上述內容就是如何利用Topshelf把.NET Core Generic Host管理的應用程序部署為Windows服務,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

浠水县| 工布江达县| 叙永县| SHOW| 特克斯县| 陇川县| 邵阳县| 南靖县| 大厂| 蓬溪县| 通州区| 营山县| 白城市| 兴隆县| 三门峡市| 开鲁县| 缙云县| 波密县| 固原市| 磐石市| 虹口区| 富阳市| 涡阳县| 洞头县| 武川县| 东城区| 赫章县| 岑溪市| 云和县| 镇沅| 天水市| 华亭县| 长岛县| 图片| 忻城县| 临漳县| 巴南区| 阳泉市| 韶山市| 天镇县| 宁德市|