C# 不带APIController属性的版本化API资源管理器
我已经实现了这里描述的 下面是一些示例代码C# 不带APIController属性的版本化API资源管理器,c#,asp.net-core,C#,Asp.net Core,我已经实现了这里描述的 下面是一些示例代码 services.AddApiVersioning( options => { options.ReportApiVersions = true; options.DefaultApiVersion = new ApiVersion(0,0); options.A
services.AddApiVersioning(
options =>
{
options.ReportApiVersions = true;
options.DefaultApiVersion = new ApiVersion(0,0);
options.AssumeDefaultVersionWhenUnspecified = true;
} );
services.AddVersionedApiExplorer(
options =>
{
// note: the specified format code will format the version as "'v'major[.minor][-status]"
options.GroupNameFormat = "'v'VVV";
options.SubstituteApiVersionInUrl = true;
} );
控制器示例:
[Route("api/v{version:apiVersion}/[controller]")]
[ApiVersion("1")]
public class BreadcrumbsController : BaseController
{
...code removed...
}
如果我将[ApiController]
属性添加到控制器,则一切正常,但如果我将其删除,则IApiVersionDescriptionProvider
不会返回任何结果。VersionApiExplorer似乎找不到任何控制器。不幸的是,添加[ApiController]
属性会覆盖我们实现的一些过滤器,因此我不想将其添加到控制器中
如何让版本化的API资源管理器在不添加ApiController属性的情况下发现控制器?我在发布文档中找到了更多信息
- ApiVersioningOptions.UseApiBehavior现在默认为true
- 如果未应用[ApiController],这可能会导致将API控制器排除在外
- 如果您的API控制器使用基于约定的路由,它们肯定会被排除,因为[ApiController]无法应用
services.AddApiVersioning(
options =>
{
options.ReportApiVersions = true;
options.DefaultApiVersion = new ApiVersion(0,0);
options.AssumeDefaultVersionWhenUnspecified = true;
options.UseApiBehavior = false;
} );
希望这将有助于将来的其他人如何改为添加
ApiVersion
属性?所有控制器都有ApiVersion属性i更新问题以表明