在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
dotnet命令
包源
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 部署服务其他方案
使用NSSM把.Net Core部署至Windows 服务
9、回顾.net 部署服务
使用Topshelf创建Windows 服务
wcf服务