2017-05-16 1 views
0

OWIN을 사용하는 프로젝트가 있습니다.프로젝트에 Swashbuckle을 추가하면 "컨트롤러에 매개 변수가없는 public 생성자가 있는지 확인하십시오"라는 오류가 발생합니다.

  1. 웹 응용 프로그램
  2. 코어
  3. 인프라
  4. WebApi이 프로젝트는 잘 작동
  5. 테스트

: 전체 솔루션은 다섯 개 부분으로 구성되어 있습니다.

최근에, 나는 내 프로젝트에 꾸며 놓을 계획이었습니다. 몇 가지 조사를 한 후에 Swashbuckle을 사용하기로 결정했습니다. 내가 http://localhost:22391/swagger/ui/index에서 내 API 문서를했다, 그리고

HttpConfiguration Config = new HttpConfiguration(); 
WebApiConfig.Register(Config); 
Config.EnableSwagger((c) => 
{ 
    c.SingleApiVersion("v1", "Flynn Forms"); 
    c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First()); 
}).EnableSwaggerUi(); 
app.UseWebApi(Config); 

:

https://github.com/domaindrivendev/Swashbuckle#custom-routes 나는 나의 Startup.cs에 다음 코드를 추가하여 튜토리얼을 따라 갔다. 그러나 모든 API가 작동을 멈췄습니다. 나는 같은 내 컨트롤러의 오류를 가지고 :

An error occurred when trying to create a controller of type 'FormTemplateController'. Make sure that the controller has a parameterless public constructor. 

내가 매개 변수없는 생성자가 없었어요를 ...하지만 그것은 Swashbuckle를 추가하기 전에 잘 작동. 나는이 오류를 봤어, 누군가가 매개 변수가없는 생성자를 추가하면이 오류를 해결할 것이라고 제안했다. 그래서 내 컨트롤러가되었습니다 :

오류가 발생했습니다. 하지만 formTemplateService가 null이라는 새로운 오류가 나타납니다.

저는 Castle Windsor를 Inversion of Control 컨테이너로 사용하고 있습니다. Swashbuckle은 Castle Windsor와 충돌이 있습니까? 누구든지 동일한 문제가 있고 해결책을 얻습니까? 충분한 배경 ​​정보를 제공했는지 확신 할 수 없습니다. 더 많은 정보가 필요하면 의견에 남겨주세요.

감사합니다.

+0

IoC가 올바르게 설정되지 않은 것 같습니다. –

+0

하지만 내 프로젝트는 Swashbuckle을 추가하기 전에 잘 작동했습니다. IoC가 올바르게 설정되지 않은 경우 프로젝트가 어떻게 작동합니까? @ MarkC. – user3293338

답변

0

다른 방법을 시도한 후에 다음 작업을 발견했습니다. 나는 이것이 내 솔루션의 입구 생각 원인 Startup.cs에

HttpConfiguration Config = new HttpConfiguration(); 
WebApiConfig.Register(Config); 
Config.EnableSwagger((c) => 
{ 
    c.SingleApiVersion("v1", "Flynn Forms"); 
    c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First()); 
}).EnableSwaggerUi(); 
app.UseWebApi(Config); 

: 은 첫째, 나는 코드를 넣습니다. 그런 다음 WebApi 부분에는 HttpConfiguration의 인스턴스를 구성하는 WebApiConfig.cs라는 파일이 있습니다. 그래서 코드를이 파일로 옮겼습니다. (이미 HttpConfiguration의 인스턴스가 있었다 때문에 다시 만들 필요가 없습니다.) 그냥 거기에 다음과 같은 코드를 넣어 :

Config.EnableSwagger((c) => 
{ 
    c.SingleApiVersion("v1", "Flynn Forms"); 
    c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First()); 
}).EnableSwaggerUi(); 

문제가 해결되었다.

관련 문제