您好,登錄后才能下訂單哦!
在.NET Core中利用Topshelf方式如何實(shí)現(xiàn)創(chuàng)建一個(gè)Windows服務(wù)?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
前言
Topshelf是一個(gè).NET Standard庫(kù),它消除了在.NET Framework和.NET Core中創(chuàng)建Windows服務(wù)的那些麻煩。
安裝
Install-Package Topshelf
代碼
using System; using System.Collections.Generic; using System.Text; using Topshelf; namespace ConsoleApp2222 { public class LoggingService : ServiceControl { private void Log(string logMessage) { Console.WriteLine(logMessage); } public bool Start(HostControl hostControl) { Log("Starting"); return true; } public bool Stop(HostControl hostControl) { Log("Stopping"); return true; } } }
在Program.cs文件的Main方法中
1、服務(wù)的名稱
2、服務(wù)是否自動(dòng)啟動(dòng)
3、服務(wù)崩潰之后的重啟時(shí)間
using System; using Topshelf; namespace ConsoleApp2222 { internal class Program { private static void Main(string[] args) { HostFactory.Run(x => { x.Service<LoggingService>(); x.EnableServiceRecovery(r => r.RestartService(TimeSpan.FromSeconds(10))); x.SetServiceName("TestService"); x.StartAutomatically(); } ); } } }
部署服務(wù)
ConsoleApp2222.exe install
ConsoleApp2222.exe start
調(diào)試服務(wù)
如果我們的服務(wù)代碼已經(jīng)在Visual Studio中打開(kāi)了,我們就可以直接啟動(dòng)調(diào)試。Topshelf會(huì)模擬在控制臺(tái)中啟動(dòng)服務(wù)。我們應(yīng)該能在控制臺(tái)中看到以下的消息。
這確實(shí)符合了我們的需求。它啟動(dòng)了我們的服務(wù),并像真正的Windows服務(wù)一樣在后臺(tái)運(yùn)行。我們可以像往常一樣設(shè)置斷點(diǎn),基本上它遵循的流程和正常安裝的服務(wù)一樣。
我們可以通過(guò)ctrl+c, 來(lái)關(guān)閉我們的應(yīng)用,但是在運(yùn)行服務(wù)執(zhí)行Stop方法之前,它是不能被關(guān)閉的,這使我們可以調(diào)試服務(wù)的關(guān)閉流程。與調(diào)試指令和配置標(biāo)志相比,這要容易的多。
這里需要注意一個(gè)問(wèn)題。如果你收到的以下內(nèi)容的消息:
這意味著你嘗試調(diào)試的服務(wù)實(shí)際上已經(jīng)作為Windows服務(wù)被安裝在系統(tǒng)中了,你需要停止(不需要卸載)這個(gè)正在運(yùn)行的服務(wù),才可以正常調(diào)試。
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。