net6 api 以服务的形式运行window
1. worker service 项目
1.需要安装nuget Microsoft.Extensions.Hosting.WindowsServices
IHost host = Host.CreateDefaultBuilder(args) .UseWindowsService() .ConfigureServices(services => { Init(services); services.AddHostedService<Worker>(); }) .Build(); host.Run();
其中就添加一句话UseWindowsService
就可以了。
2.asp.net core 项目 6.0
1.安装 nuget Microsoft.Extensions.Hosting.WindowsServices
2.设置项目目录
ContentRootPath = WindowsServiceHelpers.IsWindowsService() ? AppContext.BaseDirectory : default
var builder = WebApplication.CreateBuilder(new WebApplicationOptions { EnvironmentName = environments, Args = args, ContentRootPath = WindowsServiceHelpers.IsWindowsService() ? AppContext.BaseDirectory : default });
builder.Host.UseWindowsService();
3. aspnet core 7.0 已经解决这个问题了
//net6 下 //以服务的形式运行,需要安装Microsoft.Extensions.Hosting.WindowsServices //builder.Host.UseWindowsService(); //方法1.添加 //Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory); //var builder = WebApplication.CreateBuilder(new WebApplicationOptions //{ // EnvironmentName = environments, // Args = args, //}); //方法2. //var builder = WebApplication.CreateBuilder(new WebApplicationOptions //{ // EnvironmentName = environments, // Args = args, // ContentRootPath = WindowsServiceHelpers.IsWindowsService() ? AppContext.BaseDirectory : default //}); //net7 下 已经修复此问题 直接运行就可以 //以服务的形式运行,需要安装Microsoft.Extensions.Hosting.WindowsServices //builder.Host.UseWindowsService();
4. 控制台程序部署成服务,可以用topshelf 也可以用 Microsoft.Extensions.Hosting.WindowsServices
1.控制台程序没有appsettings和WebApplication 需要nuget Microsoft.AspNetCore.OpenApi