【问题标题】:IHostBuilder does not contain a definition for ConfigureWebHostDefaultsIHostBuilder 不包含 ConfigureWebHostDefaults 的定义
【发布时间】:2019-09-25 11:42:07
【问题描述】:

我正在尝试在 .NET Core 3.0 中使用新的 GenericHost 记录 here 但我遇到了一个非常基本的错误,即统计信息 IHostBuilder 不包含ConfigureWebHostDefaults 函数。

在此处查看 ASP.NET 3.0 文档以了解IHostBuilder 接口here 我看不到对ConfigureWebHostDefaults 的任何引用,所以我有点困惑。

我正在为 Microsoft.Extensions.HostingMicrosoft.Extensions.Hosting.Abstractions 使用 3.0.0 包,但我不禁觉得我错过了一些非常明显的东西,或者 ConfigureWebHostDefaults 出于某种原因被删除了?

更新 -- Program.cs 的屏幕截图

更新——.csproj 文件

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Hosting" Version="2.2.7" />
    <PackageReference Include="Microsoft.Extensions.Hosting" Version="3.0.0" />
    <PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="3.0.0" />
  </ItemGroup>

</Project>

【问题讨论】:

  • @Tim 发布您的代码,而不是您的代码图像。图像无法编译,无法复制和测试。
  • 是的,远程访问不会发生,抱歉@TanvirArjel。
  • @PanagiotisKanavos 我可以共享 .csproj,但它几乎是模板控制台应用程序以及附加的包引用。无论如何都会将其添加到问题中,因为它可能有用

标签: c# asp.net-core-3.0


【解决方案1】:

除了using Microsoft.Extensions.HostingConfigureWebHostDefaults还需要using Microsoft.AspNetCore.Hosting;,如下:

using Microsoft.AspNetCore.Hosting; //<-- Here it is
using Microsoft.Extensions.Hosting;

namespace MyApp
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }

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

此外,您的项目看起来像是一个控制台应用程序。那就是问题所在。 ConfigureWebHostDefaults 仅适用于 Web 应用程序。因此,您可以通过在 .csproj 文件中将 Sdk="Microsoft.NET.Sdk" 替换为 Sdk="Microsoft.NET.Sdk.Web" 来将控制台应用程序转换为 Web 应用程序,如下所示:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
  </PropertyGroup>

</Project>

【讨论】:

  • 是的,完全忽略了这一点——我已将其更新为使用 Sdk.Web 并选择了 ConfigureWebHostDefaults 扩展。感谢您的帮助
  • @Tim 很高兴看到您的问题已经解决。欢迎。
  • 感谢@TanvirArjel 的解决方案。在 Microsoft 的 3.0 迁移文档 (docs.microsoft.com/en-us/aspnet/core/migration/…) 中没有提到两个命名空间应该一起使用。命名空间中的关键字 (*.Hosting) 可能会错过任何人。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多