You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 8 Web API版本控制配置:服务无法解析

解决方案

1. 确认安装正确的NuGet包

确保项目已安装以下两个包:

  • Asp.Versioning.Mvc(核心API版本控制包)
  • Asp.Versioning.Mvc.ApiExplorer(用于Swagger集成的API Explorer扩展)

可通过NuGet包管理器安装,或使用命令行:

Install-Package Asp.Versioning.Mvc
Install-Package Asp.Versioning.Mvc.ApiExplorer

2. 修改API版本控制配置代码

在.NET 8中,AddVersionedApiExplorer已不再是顶级扩展方法,而是整合到AddApiVersioning的链式调用中。将原有配置修改为:

services.AddApiVersioning(options =>
{
    options.DefaultApiVersion = new ApiVersion(1, 0);
    options.AssumeDefaultVersionWhenUnspecified = true;
    options.ReportApiVersions = true;
})
// 链式调用AddApiExplorer配置版本化API Explorer
.AddApiExplorer(options =>
{
    options.GroupNameFormat = "'v'VVV";
    options.SubstituteApiVersionInUrl = true;
});

这段代码会自动注册IApiVersionDescriptionProvider服务,解决依赖注入失败的问题。

3. 确认命名空间引用

在ConfigureSwaggerOptions类所在文件中,确保引用正确的命名空间:

using Asp.Versioning.ApiExplorer;
using Microsoft.Extensions.Options;
using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen;

4. 注册Swagger配置类

在Program.cs中注册ConfigureSwaggerOptions:

services.ConfigureOptions<ConfigureSwaggerOptions>();

5. 验证Swagger中间件配置

确保Swagger中间件正确读取版本信息:

app.UseSwagger();
app.UseSwaggerUI(options =>
{
    var apiVersionDescriptionProvider = app.Services.GetRequiredService<IApiVersionDescriptionProvider>();
    foreach (var description in apiVersionDescriptionProvider.ApiVersionDescriptions)
    {
        options.SwaggerEndpoint(
            $"/swagger/{description.GroupName}/swagger.json",
            $"Test API {description.GroupName}");
    }
});

内容的提问来源于stack exchange,提问作者Enrico

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 19:20:08