1. 程式人生 > >在 Windows 服務中託管 ASP.NET Core專案

在 Windows 服務中託管 ASP.NET Core專案

1. 工程建立

工程目標框架可為 .NetFramework 或 .NetCore,模板為 .NetCore下的API工程,正常編寫工程程式碼即可

2.轉換專案為Windows服務

  1. 修改 Properties 下 launchSettting.json 檔案,新增Windows 執行時識別符號
<PropertyGroup>
   <TargetFramework>net461</TargetFramework>
   <RuntimeIdentifier>win-x64</RuntimeIdentifier>
 </PropertyGroup>
  1. 新增Microsoft.AspNetCore.Hosting.WindowsServices 引用包
  2. 修改 Program.cs 檔案
   public class Program
   {
       public static void Main(string[] args)
       {
           // 1.修改為呼叫 RunAsService()
           CreateWebHostBuilder(args).Build().RunAsService();
       }

       public static IWebHostBuilder CreateWebHostBuilder
(string[] args) { // 2.呼叫 UseContentRoot 並使用應用的釋出位置路徑 var pathToExe = Process.GetCurrentProcess().MainModule.FileName; var pathToContentRoot = Path.GetDirectoryName(pathToExe); return WebHost.CreateDefaultBuilder(args) .ConfigureAppConfiguration
((context, config) => { // Configure the app here. }) .UseContentRoot(pathToContentRoot) .UseStartup<Startup>(); } }

3. 釋出工程

可用VS內嵌釋出外掛釋出,格式為“檔案系統”,或者使用命令列釋出,在解決方案資料夾下執行命令(執行時根據工程而定): dotnet publish --configuration Release --runtime win-x64

4. sc命令工具打包服務(管理員身份執行)

  1. 建立服務: 在打包後的資料夾下執行命令: sc create MyServiceName.exe binPath= "MyServiceName.exe path" 注意:binPath 值是應用的可執行檔案的路徑,其中包括可執行檔案的檔名。 等於號和路徑開頭的引號字元之間需要新增空格。

  2. 啟動服務 sc start MyServiceName.exe 服務啟動成功後,若是Web 應用時,在應用所在路徑中瀏覽應用,預設路徑 http://localhost:5000

  3. 停止服務 sc stop MyServiceName.exe

  4. 解除安裝服務 sc delete MyServiceName.exe

END