Compartir por


Desuso del método de extensión WithOpenApi

Los WithOpenApi métodos han quedado en desuso en .NET 10. Invocar estos métodos ahora genera el diagnóstico ASPDEPR002 en tiempo de compilación y una advertencia estándar Obsolete que indica:

WithOpenApi está en desuso y se quitará en una versión futura. Para más información, visite https://aka.ms/aspnet/deprecate/002.

Versión introducida

.NET 10 Preview 7

Comportamiento anterior

Anteriormente, podría usar el método de WithOpenApi extensión sin advertencias:

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

Nuevo comportamiento

A partir de .NET 10, el uso del método de WithOpenApi extensión genera una advertencia del compilador:

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

Sin embargo, la llamada todavía se compila y ejecuta.

Tipo de cambio disruptivo

Este cambio puede afectar a la compatibilidad de orígenes.

Motivo del cambio

WithOpenApi funcionalidad duplicada que ahora proporciona la canalización integrada de generación de documentos de OpenAPI. En desuso simplifica la superficie de API y se prepara para su eliminación final.

Quite .WithOpenApi() las llamadas del código.

  • Si usó Microsoft.AspNetCore.OpenApi para la generación de documentos, use el método de AddOpenApiOperationTransformer<TBuilder>(TBuilder, Func<OpenApiOperation,OpenApiOperationTransformerContext,CancellationToken,Task>) extensión .

    Antes:

    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();
    

    Después:

    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();
    
  • Si usó Swashbuckle para la generación de documentos, use la IOperationFilter API.

  • Si usó NSwag para la generación de documentos, use la IOperationProcessor API.

Las APIs afectadas