Utfasning av WithOpenApi-tilläggsmetod

Metoderna WithOpenApi har blivit inaktuella i .NET 10. Om du anropar dessa metoder skapas nu kompileringstidsdiagnostiken ASPDEPR002 och en standardvarning Obsolete som anger:

WithOpenApi är inaktuell och tas bort i en framtida version. Mer information finns på https://aka.ms/aspnet/deprecate/002.

Version lanserad

.NET 10 Förhandsversion 7

Tidigare beteende

Tidigare kunde du använda WithOpenApi tilläggsmetoden utan några varningar:

app.MapGet("/weather", () => ...)
   .WithOpenApi();   // No warnings.

Nytt beteende

Från och med .NET 10 skapar tilläggsmetoden WithOpenApi en kompilatorvarning:

app.MapGet("/weather", () => ...)
   .WithOpenApi();   // Warning ASPDEPR002: WithOpenApi is deprecated...

Anropet kompilerar och körs dock fortfarande.

Typ av brytande ändring

Den här ändringen kan påverka källkompatibilitet.

Orsak till ändring

WithOpenApi duplicerade funktioner som nu tillhandahålls av den inbyggda OpenAPI-dokumentgenereringspipelinen. Inaktuellt förenklar API-ytan och förbereder för slutlig borttagning.

Ta bort .WithOpenApi() anrop från koden.

  • Om du använde Microsoft.AspNetCore.OpenApi för dokumentgenerering använder du AddOpenApiOperationTransformer<TBuilder>(TBuilder, Func<OpenApiOperation,OpenApiOperationTransformerContext,CancellationToken,Task>) tilläggsmetoden.

    Före:

    using Microsoft.AspNetCore.OpenApi;
    
    var builder = WebApplication.CreateBuilder();
    var app = builder.Build();
    
    app.MapGet("/weather", () => ...)
       .WithOpenApi(operation =>
       {
           // Per-endpoint tweaks
           operation.Summary     = "Gets the current weather report.";
           operation.Description = "Returns a short description and emoji.";
           return operation;
       });
    
    app.Run();
    

    Efter:

    using Microsoft.AspNetCore.OpenApi;
    
    var builder = WebApplication.CreateBuilder();
    var app = builder.Build();
    
    app.MapGet("/weather", () => ...)
       .AddOpenApiOperationTransformer((operation, context, ct) =>
       {
           // Per-endpoint tweaks
           operation.Summary     = "Gets the current weather report.";
           operation.Description = "Returns a short description and emoji.";
           return Task.CompletedTask;
       });
    
    app.Run();
    
  • Om du använde Swashbuckle för dokumentgenerering använder du API:et IOperationFilter .

  • Om du använde NSwag för dokumentgenerering använder du API:et IOperationProcessor .

Berörda API:er