2017-10-18 1 views
0

asp.net 핵심 mvc 웹 응용 프로그램에서 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 코어에서는) – Tseng

답변

2

해결 방법으로,이 목적으로 만 사용되는 기본 생성자를 추가 할 수 있습니다. 나는 더 나은 해결책을보기를 더 좋아 하겠지만.

관련 문제