在 HostBuilder 上查找 WebHostBuilder.GetSettings

Find WebHostBuilder.GetSettings on HostBuilder

我有一个 ASP.NET Core 2.2 应用程序,其 Program.cs 文件中包含以下代码:

private static IWebHost BuildWebHost(string[] args)
{
    string appDir = Directory.GetCurrentDirectory();
    var webHostBuilder = new WebHostBuilder()
        .UseKestrel()
        .UseContentRoot(appDir)
        // and a few more...
        .UseStartup<Startup>();

    Urls = webHostBuilder.GetSetting(WebHostDefaults.ServerUrlsKey);

    return webHostBuilder.Build();
}

现在我正在创建一个 ASP.NET Core 3.1 项目并希望尽可能多地重复使用。另外,老项目总有一天要升级,所以我需要知道如何修改代码。

新项目如下所示:

public static IHostBuilder CreateHostBuilder(string[] args)
{
    string appDir = Directory.GetCurrentDirectory();
    var hostBuilder = Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        });

    Urls = hostBuilder.GetSetting(WebHostDefaults.ServerUrlsKey);

    return hostBuilder;
}

这显示错误,因为 hostBuilder.GetSetting 未定义。我找不到任何类似的或其他解决方案。我也不知道原代码是哪里来的

我需要如何修改此代码,以便它可以访问它的 public URL,但是它是如何配置的?

感谢 Crowcoder 的评论,我找到了解决方案。以下代码按预期工作。 WebHostBuilder 现在打包在 HostBuilder.ConfigureWebHostDefaults 方法中。

public static IHostBuilder CreateHostBuilder(string[] args)
{
    string appDir = Directory.GetCurrentDirectory();
    var hostBuilder = Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
            Urls = webBuilder.GetSetting(WebHostDefaults.ServerUrlsKey);
        });

    return hostBuilder;
}