[我试图将我的应用程序从asp.net core 2.1迁移到3.0,并且在program.cs中首次建议更改以创建主机。
asp.net核心2.1 program.cs
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
asp.net core 3.0 program.cs
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
我可以看到在asp.net core 3.0中,它正在创建Host而不是WebHost,并在创建Host时注入WebHostBuilder。
但是我在这里没有一个清晰的主意,Host和WebHost之间有什么区别,为什么asp.net core 3.0应用程序不允许创建WebHost?
预先感谢。
主机负责应用程序的启动和生命周期管理。服务器负责接受HTTP请求。主机的部分责任包括确保应用程序的服务和服务器可用并正确配置。您可以将主机视为服务器周围的包装器。主机配置为使用特定的服务器;服务器不知道其主机。
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting;
namespace WebApplication1
{
public class Program
{
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
}
}
您使用WebHostBuilder实例创建主机。通常是在您应用的入口点完成的:public static void Main。如下所示,一个典型的Program.cs演示了如何使用WebHostBuilder来构建主机。