如何在 ASP.NET Core 3.0 中调用 UseWebRoot

How to call UseWebRoot in ASP.NET Core 3.0

在 ASP.NET Core 2.2 中,我可以像这样设置 UseWebRoot()

public static void Main(string[] args)
{
   CreateWebHostBuilder(args)
     .UseUrls("http://*:5000")
     .UseWebRoot(@".\WebSite\wwwroot\")
     .Build()
     .Run();
}

但是我今天不知道应该怎么做,因为没有这样的方法了。

对于 3.0,请改用 CreateDefaultBuilder

WebHost.CreateDefaultBuilder(args)
     .UseWebRoot("")

ASP.NET Core 3.0 项目默认使用 Generic Host。在项目模板中,它是这样配置的:

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webHostBuilder =>
        {
            webHostBuilder.UseStartup<Startup>();
        });

在上面的示例中,webHostBuilderIWebHostBuilder, which still contains the UseWebRoot 扩展方法的实现。这意味着您可以像在 2.2 中那样调用它,但它只是移动到上面显示的传递给 ConfigureWebHostDefaults 的委托内部。这是完整的示例:

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webHostBuilder =>
        {
            webHostBuilder.UseStartup<Startup>();
            webHostBuilder.UseWebRoot(@".\WebSite\wwwroot\");
        });