在 Windows 服务中托管 ASP (.NET 6)

Host ASP (.NET 6) in a Windows Service

我目前正在使用 WebHost 和 WebHostBuilder 在 Windows 服务中托管 ASP.NET (.NET 5) 应用程序。

.NET 6 引入了 WebApplication 和 WebApplicationBuilder。我如何使用这些来托管 Windows 服务?

您将使用此处记录的 UseWindowsService() 扩展方法:

https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/windows-service?view=aspnetcore-6.0&tabs=visual-studio#app-configuration

与之前的版本一样,您需要安装 Microsoft.Extensions.Hosting.WindowsServices NuGet 包。

在 .NET 6 中使用 WebApplicationBuilder 实现此功能需要解决方法:

var webApplicationOptions = new WebApplicationOptions() { ContentRootPath = AppContext.BaseDirectory, Args = args, ApplicationName = System.Diagnostics.Process.GetCurrentProcess().ProcessName };
var builder = WebApplication.CreateBuilder(webApplicationOptions);

builder.Host.UseWindowsService();

已更新:

Microsoft has changed 应该如何创建服务来解决这个问题。 --contentRoot 参数应该与 exe 一起使用。

sc config MyWebAppServiceTest binPath= "$pwd\WebApplication560.exe --contentRoot $pwd\"
New-Service -Name {SERVICE NAME} -BinaryPathName "{EXE FILE PATH} --contentRoot {EXE FOLDER PATH}" -Credential "{DOMAIN OR COMPUTER NAME\USER}" -Description "{DESCRIPTION}" -DisplayName "{DISPLAY NAME}" -StartupType Automatic