ASP.NET Core 8 Web API: バージョン管理を追加するには? 質問する

ASP.NET Core 8 Web API: バージョン管理を追加するには? 質問する

新しい ASP.NET Core 8 Web API を作成しています。.NET 6 または .NET 7 を使用した以前のプロジェクトでは、次のものを使用できました。

services.AddApiVersioning(options =>
{
    options.DefaultApiVersion = new ApiVersion(1, 0);
    options.AssumeDefaultVersionWhenUnspecified = true;
    options.ReportApiVersions = true;
});

services.AddVersionedApiExplorer(options =>
{
    options.GroupNameFormat = "'v'VVV";
    options.SubstituteApiVersionInUrl = true;
});

現在、このパッケージMicrosoft.AspNetCore.Mvc.ApiExplorerは非推奨になっており、新しいものに置き換えましたAsp.Versioning.Mvc.ApiExplorerが、 の拡張機能はありませんAddVersionedApiExplorer

ここに画像の説明を入力してください

Swagger の構成には、次のコードがあります。

public class ConfigureSwaggerOptions : IConfigureNamedOptions<SwaggerGenOptions>
{
    private readonly IApiVersionDescriptionProvider _provider;

    public ConfigureSwaggerOptions(IApiVersionDescriptionProvider provider)
    {
        _provider = provider;
    }

    public void Configure(SwaggerGenOptions options)
    {
        foreach (var description in _provider.ApiVersionDescriptions)
        {
            options.SwaggerDoc(
                description.GroupName,
                CreateVersionInfo(description));
        }
    }

    public void Configure(string name, SwaggerGenOptions options)
    {
        Configure(options);
    }

    private static OpenApiInfo CreateVersionInfo(
        ApiVersionDescription description)
    {
        var info = new OpenApiInfo()
        {
            Title = "Test API",
            Version = description.ApiVersion.ToString(),
            Description = "This is a test API.",
        };

        if (description.IsDeprecated)
        {
            info.Description += " This API version has been deprecated.";
        }

        return info;
    }
}

アプリケーションを実行すると、このエラーが発生します

'Middletier.Api.Extensions.Configuration.ConfigureSwaggerOptions' をアクティブ化しようとしているときに、タイプ 'Asp.Versioning.ApiExplorer.IApiVersionDescriptionProvider' のサービスを解決できません。

ここに画像の説明を入力してください

どうすれば修正できますか?

ベストアンサー1

AddApiVersioningの動作は少し異なります( を返しますIApiVersioningBuilder)。 をインストールするAsp.Versioning.Mvc.ApiExplorerと、 を呼び出すことができます。AddApiExplorerIApiVersioningBuilder返された日付AddApiVersioning:

builder.Services.AddApiVersioning(options =>
    {
        options.DefaultApiVersion = new ApiVersion(1, 0);
        options.AssumeDefaultVersionWhenUnspecified = true;
        options.ReportApiVersions = true;
    })
    .AddApiExplorer(options =>
    {
        options.GroupNameFormat = "'v'VVV";
        options.SubstituteApiVersionInUrl = true;
    });

を参照してくださいクイックスタートサンプルそしてこの質問は -ApiVersion 属性が .NET 8 で動作しない

おすすめ記事