2016-12-18 7 views
1

autofac 구성에서 로거를 설정했지만 컨트롤러 또는 다른 클래스에서 로거가 주입되지 않습니다.Autofac을 사용하여 ILogger를 클래스에 주입 할 수 없습니다.

builder.RegisterType<SerilogLogger>() 
       .WithParameters(new List<Parameter> 
       { 
        new NamedParameter("connectionString", azureConnectionString), 
        new NamedParameter("azureTableName", azureTableName), 
       }) 
       .As<ILogger>().SingleInstance(); 

HomeController.cs

public class HomeController : Controller 
{ 
    private ILogger logger; 

    public HomeController(ILogger logger) 
    { 
     this.logger = logger; 
    } 

    public ActionResult Index() 
    { 
     ViewBag.Title = "Home Page"; 

     return View(); 
    } 
} 

내가 명시 적으로 로거에 액세스해야합니다. 어떤 아이디어?

예외 정보

No parameterless constructor defined for this object. 

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.MissingMethodException: No parameterless constructor defined for this object. 

예외는, 정직 내 autofac의 설정에 문제가 될 것으로 보인다.

+0

예외가 있습니까? 그렇다면 귀하의 질문에 완전한 예외 세부 사항을 추가하십시오. – Steven

+0

Autofac에 등록한 ILogger 인터페이스가 생성자와 똑같은가요? 많은 ILogger 인터페이스가 있습니다. –

+0

ILogger는 Nlog와 Serilog를 통해 작성한 인터페이스입니다. –

답변

0

질문에 asp.net-web-api2이라는 태그가 붙은 것 같지만 코드 샘플은 ASP.NET MVC를 사용하는 것 같습니다.

나는 두 가지가 여기에 일어나고 볼 수 있습니다

  • 당신은 당신의 용기에없는 register the controllers했다
  • 및/또는 당신은 기본 컨트롤러 활성제는 의미 당신의 Autofac 컨테이너를 사용하는 set the DependencyResolver을하지 않았다 귀하의 컨트롤러를 새로 작성하는 책임이 있으며, 매개 변수가없는 기본 생성자가있는 컨트롤러에 대해서만 수행 할 수 있습니다.
+0

그래, 난 그냥 HomeController 테스트했다. ILogger는 다른 클래스에서 주입되지 않습니다. dependencyresolver가 설정되었습니다 ... 다른 모든 종속성이 예상대로 주입됩니다. –

+0

귀하의 의견에 약간 혼란 스럽습니다. ASP.NET MVC'HomeController'를 사용하여 테스트했지만 ASP.NET Web API를 사용하고 있습니까? 그렇다면 [ASP.NET 웹 API 관련'DependencyResolver'] (http://docs.autofac.org/en/latest/integration/webapi.html#set-the-dependency-resolver)를 설정 했습니까? –

+0

전에 없었던 HomeController를 제외한 모든 곳에서 작동하고있는 것으로 보입니다. 실제로 HomeController가 필요하지 않습니다 ... 도와 줘서 고마워. –