为现有ASP.NET Core Web API添加.NET Aspire后,builder.MapDefaultEndpoints()报错
解决方法
错误原因很明确:MapDefaultEndpoints是WebApplication类型的扩展方法,你错误地在WebApplicationBuilder实例(代码里的builder)上调用它,触发了类型不匹配的错误。
正确做法是将MapDefaultEndpoints()的调用移到builder.Build()之后——因为builder.Build()返回的才是WebApplication实例(代码里的app)。结合.NET Aspire的使用规范,建议将其放在startup.Configure调用之后、app.Run()之前。
修改后的完整代码如下:
try { Log.Information("Starting Rest API"); var builder = WebApplication.CreateBuilder(args); var startup = new Startup(builder.Configuration); startup.ConfigureServices(builder.Services); // 这行调用正确,AddServiceDefaults属于WebApplicationBuilder的扩展方法 builder.AddServiceDefaults(); ConfigureLogger(builder.Host); var app = builder.Build(); startup.Configure(app, app.Environment); // 移至此处,在WebApplication实例上调用 app.MapDefaultEndpoints(); app.Run(); } catch (Exception ex) { Log.Fatal(ex, "Host terminated unexpectedly"); } finally { Log.CloseAndFlush(); }
关键修改点:
- 保留
builder.AddServiceDefaults()在builder.Build()之前(这部分调用逻辑正确) - 将原
builder.MapDefaultEndpoints()改为app.MapDefaultEndpoints(),并调整到var app = builder.Build()之后的代码段中
内容的提问来源于stack exchange,提问作者user3552264
相关产品推荐
相关产品推荐

