在windows 服務中托管asp.net core SDK 2.1.300 "官方示例" 1、添加運行標識符 2、添加包引用 dotnet add package Microsoft.AspNetCore.Hosting.WindowsServices v 2.1.0 s https://www. ...
在windows 服務中托管asp.net core
SDK 2.1.300
官方示例
1、添加運行標識符
xml <PropertyGroup> <TargetFramework>netcoreapp2.1</TargetFramework> <RuntimeIdentifier>win7-x64</RuntimeIdentifier> </PropertyGroup>
2、添加包引用 dotnet add package Microsoft.AspNetCore.Hosting.WindowsServices -v 2.1.0 -s https://www.nuget.org/api/v3
3、確認導入是否成功
xml <ItemGroup> <PackageReference Include="Microsoft.AspNetCore.App" /> <PackageReference Include="Microsoft.AspNetCore.Hosting.WindowsServices" Version="2.1.0" /> </ItemGroup>
4、修改Program Main 函數
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().RunAsService();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args)
{
var pathToExe = Process.GetCurrentProcess().MainModule.FileName;
var pathToContentRoot = Path.GetDirectoryName(pathToExe);
return WebHost.CreateDefaultBuilder(args)
.UseKestrel()
.UseUrls("http://*:5001", "http://*:5002")
.ConfigureAppConfiguration((context, config) =>
{
// Configure the app here.
})
.UseContentRoot(pathToContentRoot)
.UseStartup<Startup>();
}
5、發佈運行
dotnet publish -c Release -o "F:\winservices\mvcApp21"
6、使用sc.exe工具創建服務 此處使用系統原始DOS命令
發佈根目錄下:sc create mvcApp21 binPath= "F:\winservices\mvcApp21\mvcApp21.exe"
確保 binPath= 參數與其值之間存在空格
啟動服務 sc start MyService
查看服務狀態 sc query MyService
停止服務 sc stop MyService
刪除服務 sc delete MyService
7、可能遇到的問題
- 使用 powershell創建服務會報錯,參見其他博友文章。在Windows服務中托管 ASP.NET Core的坑
8、.net core 部署服務其他方案
9、回顧.net 部署服務