问题描述
如何创建独立于应用程序的 Kestrel Windows 服务?我创建了一个通用的 dot.net 5.0 工作服务项目,其中有一个专用文件夹用于已发布的 asp.net 核心应用程序(在本例中为 Blazor 服务器端)。 Blazor 应用程序是一个单独的项目,不属于 Kestrel 服务项目。目标是拥有一个通用的 Windows 服务,该服务将选择位于专用子文件夹中的任何 Asp.Net Core 应用程序。后来我可以将此服务与任何 AspNetCore 应用一起使用。
Worker Service Program.cs 文件:
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.AspNetCore.Hosting;
namespace KestrelService
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseWindowsService()
//.ConfigureAppConfiguration((hostingContext,config) =>
//{
// config.SetBasePath(Directory.GetCurrentDirectory());
// config.AddJsonFile("appsettings.json");
//})
.ConfigureServices((hostContext,services) =>
{
services.AddHostedService<Worker>();
})
.ConfigureWebHost(config =>
{
config.UseUrls("https://*:5001");
})
;
}
}
已发布的 Kestrel 服务文件夹如下所示:
AspNetCoreWebApp 文件夹用于托管实际的 Web 应用程序
接下来我有两个问题:
- 我应该如何在 Kestrel 服务项目中构建我的 Program.cs 以便能够在子文件夹中托管任何 AspNetCore 应用程序?因此,Kestrel 服务将成为所提供网络应用的入口点。
- 如果我的 Kestrel 服务是独立的,我是否也应该将我的 Blazor 应用发布为独立的? - 考虑在目标机器上根本没有安装框架的场景。我想避免框架的过度重复发布。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)