ASP.NET Core 3.1不支持生成此IWebHostBuilder实现



我正在尝试将我的.net内核2.2升级到3.1,但出现以下错误。

不支持构建IWebHostBuilder的此实现。

EndpointRoutingMiddleware与EndpointMiddleware设置的端点匹配,因此必须在EndpointMiddleware.之前将其添加到请求执行管道中。请通过在应用程序启动代码中对"Configure(…("的调用中调用"IApplicationBuilder.UseRouting"来添加EndpointRoutingMiddleware。

我不知道为什么这是在抱怨IWebHostBuilder

有人能给我指路吗?

程序.cs

public static void Main(string[] args)
{
IHost webHost = (IHost)BuildWebHost(args);
var runTask = webHost.RunAsync();
runTask.Wait();
return;          
}


public static IHostBuilder BuildWebHost(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults
(Web =>
{
Web.UseStartup<Startup>()
.UseConfiguration(Configuration)
.UseSerilog()
.Build();
});

启动.cs

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");               
app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseAuthentication();
app.UseHttpContext();

app.UseEndpoints(endpoints =>
endpoints.MapControllers());           
}

//...
(Web =>
{
Web.UseStartup<Startup>()
.UseConfiguration(Configuration)
.UseSerilog()
.Build(); //<--DON'T DO THIS
});

由于而导致原始问题

//...GenericWebHostBuilder
public IWebHost Build()
{
throw new NotSupportedException($"Building this implementation of {nameof(IWebHostBuilder)} is not supported.");
}

代码需要重构为

public static async Task Main(string[] args) {
IHost host = BuildWebHost(args);
await host.RunAsync();  
}

public static IHost BuildWebHost(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(Web => {
Web.UseStartup<Startup>()
.UseConfiguration(Configuration)
.UseSerilog();
})
.Build();

为了遵循文件中建议的格式。

如果代码不需要异步,那么也可以工作

public static void Main(string[] args) {
IHost host = BuildWebHost(args);
host.Run();  
}

最新更新