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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章