无法使用自定义基本控制器创建swagger.json

时间:2019-07-01 14:25:55

标签: swagger swashbuckle asp.net-core-2.2

我有一个控制器,例如“ SampleController”,它使用“ MyControllerBase”(来自NuGet包)作为基类。

我正在尝试使用swagger添加API文档,但是swagger无法获取'SampleController',因此无法创建swagger.json。

我收到错误“获取错误:/swagger/v1/swagger.json”

'MyControllerBase'继承了'ControllerBase',因此'SampleController'正在作为API工作。

我如何告诉挥舞者使用'MyControllerBase'查找控制器

来自Nuget包:

namespace My.ApiFormatter.Controller
{
  public abstract class MyControllerBase<T> : ControllerBase, IFilterableController
  {
    public virtual Dictionary<string, IFilterMapper> FilterWhitelist => new Dictionary<string, IFilterMapper>();
  }
}

实施:

  [Route("api/[controller]")]
  [ApiController]
  public class SampleController : MyControllerBase<ExampleData>
  {
    [HttpGet]
    public override ActionResult<CollectionEnvelope<ExampleData>> GetAll()
    {
      var results = ExampleDatas
        .Where(x => x.Key > (Info.PageSize * Info.SkipPages)
            && x.Key <= (Info.PageSize * (Info.SkipPages + 1)))
        .Select(y => y.Value).ToList();

      var collectionEnvelope = GetCollectionEnvelope(results, ExampleDatas.Count);
      return Ok(collectionEnvelope);
    }
  }

Error In Swagger

1 个答案:

答案 0 :(得分:0)

Swagger只会将方法作为基类中的控制器。您可能会收到错误,因为swagger认为任何公共方法都是端点。设置不受端点保护的方法和属性