我有一个 Blazor 服务器端应用程序已升级到最新版本的 NET8。启动应用程序时,我收到以下异常:
无法实例化服务类型“Microsoft.Extensions.Hosting.IHostEnvironment”的实现类型“Microsoft.Extensions.Hosting.IHostEnvironment”。
打电话时:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((context, config) =>
{
var builder = config.Build();
var env = context.HostingEnvironment;
config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables();
})
.UseSerilog((context, services, configuration) => configuration
.ReadFrom.Configuration(context.Configuration)
.ReadFrom.Services(services)
.Enrich.FromLogContext())
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
和堆栈跟踪:
在 //src/libraries/Microsoft.Extensions.DependencyInjection/src/ServiceLookup/CallSiteFactory.cs 中的 Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.Populate():第 78 行 在 //src/libraries/Microsoft.Extensions.DependencyInjection/src/ServiceProvider.cs 中的 Microsoft.Extensions.DependencyInjection.ServiceProvider..ctor(ICollection`1 serviceDescriptors, ServiceProviderOptions options):第 63 行 在 //src/libraries/Microsoft.Extensions.DependencyInjection/src/ServiceCollectionContainerBuilderExtensions.cs 中的 Microsoft.Extensions.DependencyInjection.ServiceCollectionContainerBuilderExtensions.BuildServiceProvider(IServiceCollection 服务、ServiceProviderOptions 选项):第 57 行 在 //src/libraries/Microsoft.Extensions.Hosting/src/HostBuilder.cs 中的 Microsoft.Extensions.Hosting.HostBuilder.InitializeServiceProvider():第 359 行 在 /_/src/libraries/Microsoft.Extensions.Hosting/src/HostBuilder.cs 中的 Microsoft.Extensions.Hosting.HostBuilder.Build():第 164 行 在 C:\Projects\MyApp\MyApp\Program.cs 中的 MyApp.Program.Main(String[] args):第 31 行
我错过了什么?
Blazor 是 Web 应用程序,要正确构建此类 Web 应用程序,您需要使用 WebApplicationBuilder
命名空间中的
Microsoft.AspNetCore.Builder
。
如下:
var builder = WebApplication.CreateBuilder(args);
WebApplicationBuilder
,然后可以构建并运行 Web 应用程序。