2017-10-18 137 views
0

我们想在我们的asp.net核心mvc web应用程序中使用swagger。因为我们使用IoC在我们的控制器中注入所需的实例,所以Swagger无法构建Swagger UI。当我删除构造函数,它工作正常。Swagger API描述与控制器中的构造函数不起作用

有没有人有一个想法或解决方法使用控制器内的构造函数与大摇大摆?

[Route("TestNamesapce/TestService/2017/08/[controller]")] 
public class TestController: FullController 
{ 

    private readonly IMaintenanceTaskProvider _provider; 
    private readonly MaintenanceServiceConfiguration _config; 
    private ILog _log; 
    private MessageWorker _worker; 

    /// <summary> 
    /// 
    /// </summary> 
    /// <param name="log">The log.</param> 
    /// <param name="eventing">The eventing.</param> 
    /// <param name="worker">The worker.</param> 
    /// <param name="options">The options.</param> 
    /// <param name="context">The context.</param> 
    public TestController(ILog log, IEventingClient eventing, IFileManagementClient fileManagement, MessageWorker worker, IMaintenanceTaskProvider provider, IOptions<Configuration> options) : base(log, eventing, fileManagement) 
    { 
     _config = options.Value; 
     _log = log; 
     _provider = provider; 
     _worker = worker; 
    } 

    /// <summary> 
    /// Gets the internal license identifier. 
    /// </summary> 
    /// <returns></returns> 
    [HttpGet("GetInternalLicenseId")] 
    public string GetInternalLicenseId() 
    { 
     return "abcdefghijklmnop"; 
    } 
+1

让我们看看代码。 –

+0

你确定这是原因吗?我所有的控制器都没有无参数的构造函数,并使用依赖注入。构造函数实际上甚至不用于swagger.json文件。它使用ApiExplorer(至少在ASP.NET Core上) – Tseng

回答

2

作为一种变通方法,您可以添加用于仅此目的的默认构造函数。尽管我也希望看到更好的解决方案。