Freigeben über


Veraltete WithOpenApi-Erweiterungsmethode

Die WithOpenApi Methoden sind in .NET 10 veraltet. Das Aufrufen dieser Methoden erzeugt jetzt die Kompilierungszeitdiagnose ASPDEPR002 und eine Standardwarnung Obsolete , die besagt:

WithOpenApi ist veraltet und wird in einer zukünftigen Version entfernt. Weitere Informationen finden Sie unter https://aka.ms/aspnet/deprecate/002.

Eingeführte Version

.NET 10 Preview 7

Vorheriges Verhalten

Zuvor konnten Sie die WithOpenApi Erweiterungsmethode ohne Warnungen verwenden:

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

Neues Verhalten

Ab .NET 10 erzeugt die Verwendung der WithOpenApi Erweiterungsmethode eine Compilerwarnung:

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

Der Aufruf wird jedoch weiterhin kompiliert und ausgeführt.

Art der einschneidenden Änderung

Diese Änderung kann sich auf die Quellkompatibilität auswirken.

Grund für Änderung

WithOpenApi Duplizierte Funktionalität, die jetzt von der integrierten OpenAPI-Dokumentgenerierungspipeline bereitgestellt wird. Die Veraltetkeit vereinfacht die API-Oberfläche und bereitet sich auf die spätere Entfernung vor.

Entfernen Sie .WithOpenApi() Aufrufe aus Ihrem Code.

  • Wenn Sie die Dokumentgenerierung verwendet Microsoft.AspNetCore.OpenApi haben, verwenden Sie die AddOpenApiOperationTransformer<TBuilder>(TBuilder, Func<OpenApiOperation,OpenApiOperationTransformerContext,CancellationToken,Task>) Erweiterungsmethode.

    Vorher:

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

    Danach:

    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();
    
  • Wenn Sie die Dokumentgenerierung verwendet haben Swashbuckle , verwenden Sie die IOperationFilter API.

  • Wenn Sie die Dokumentgenerierung verwendet haben NSwag , verwenden Sie die IOperationProcessor API.

Betroffene APIs