asp.net核心中的Host和WebHost有什么区别

问题描述 投票:0回答:1

[我试图将我的应用程序从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?

预先感谢。

asp.net-core asp.net-core-2.1 asp.net-core-3.0
1个回答
0
投票

主机负责应用程序的启动和生命周期管理。服务器负责接受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来构建主机。

© www.soinside.com 2019 - 2024. All rights reserved.