Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 不带APIController属性的版本化API资源管理器_C#_Asp.net Core - Fatal编程技术网

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]无法应用
阅读后,我添加了建议的UseApiBehavior=false(默认为true,这是一个突破性的更改),现在它可以正常工作了

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

希望这将有助于将来的其他人

如何改为添加
ApiVersion
属性?所有控制器都有ApiVersion属性i更新问题以表明