一个 ASP.NET Core 项目中依然用的是 Program + Startup,app 的类型时 IApplicationBuilder,不是 WebApplication,如何配置 Minimal API?
public virtual void Configure(IApplicationBuilder app, IWebHostEnvironment env, IAntiforgery antiforgery)
{
var api = app.NewVersionedApi().MapGroup("/openapi/v{version:apiVersion}/posts").HasApiVersion(1);
}
上面的代码编译报错
'IApplicationBuilder' does not contain a definition for 'NewVersionedApi' and the best extension method overload 'IEndpointRouteBuilderExtensions.NewVersionedApi(IEndpointRouteBuilder, string?)' requires a receiver of type 'Microsoft.AspNetCore.Routing.IEndpointRouteBuilder'
WebApplication 既实现了 IApplicationBuilder 接口,又实现了 IEndpointRouteBuilder 接口,NewVersionedApi 是针对 IEndpointRouteBuilder 的扩展,改为在 app.UseEndpoints 在配置即可
app.UseEndpoints(
endpoints =>
{
endpoints.MapDefaultControllerRoute();
endpoints.MapPostsOpenApis();
});