Net 7.0 : Remplacer Microsoft.AspNetCore.Mvc.Versioning.ApiExplorer
Bonjour,
Les librairies suivantes sont déclarées obsolètes et je cherche à les remplacer :
Microsoft.AspNetCore.Mvc.Versioning
Microsoft.AspNetCore.Mvc.Versioning.ApiExplorer
Par défaut le gestionnaire de NuGet me propose d'utiliser les librairies suivantes :
Asp.Versioning.Mvc
Asp.Versioning.Mvc.ApiExplorer
Sauf qu'il me manque à présent des éléments.
Dans la méthode Startup.Configure(IApplicationBuilder app, IWebHostEnvironment env) le builder ne contient de méthode UseApiVersioning().
Code:
app.UseApiVersioning();
Dans la méthode Startup.ConfigureServices(IServiceCollection services) le membre ErrorResponses n'est pas reconnu.
Code:
1 2 3 4 5 6 7 8 9
| services.AddApiVersioning(options =>
{
options.DefaultApiVersion = new ApiVersion(2, 0);
options.AssumeDefaultVersionWhenUnspecified = true;
options.ReportApiVersions = true;
options.ApiVersionReader = ApiVersionReader.Combine(new HeaderApiVersionReader("x-api-version"),
new MediaTypeApiVersionReader("version"));
options.ErrorResponses = new ApiVersionErrorResponseProvider();
}) |
Et les objets DefaultErrorResponseProvider et ErrorResponseContext n'existent plus.
Je ne peux donc plus en hériter dans ce code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| public class ApiVersionErrorResponseProvider : DefaultErrorResponseProvider
{
public override IActionResult CreateResponse(ErrorResponseContext context)
{
var message = "error Api version.";
switch (context.ErrorCode)
{
case "UnsupportedApiVersion":
message = "Unsupported Api version.";
break;
default:
break;
}
var result = new ObjectResult(new ProblemDetails
{
Type = "API Version",
Title = $"{context.ErrorCode} - {message}",
Detail = context.MessageDetail,
Status = context.StatusCode,
Instance = context.Request.Path.Value,
})
{
StatusCode = context.StatusCode
};
return result;
}
} |
Quelqu'un a-t-il été confronté à ce problème et sais comment y remédier ?
Merci.