在 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()
扩展方法:
与之前的版本一样,您需要安装 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
我目前正在使用 WebHost 和 WebHostBuilder 在 Windows 服务中托管 ASP.NET (.NET 5) 应用程序。
.NET 6 引入了 WebApplication 和 WebApplicationBuilder。我如何使用这些来托管 Windows 服务?
您将使用此处记录的 UseWindowsService()
扩展方法:
与之前的版本一样,您需要安装 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