1

다음은 정확한 응용 프로그램 시나리오입니다.ResolutionException - "*********** 유형의 필수 종속성을 확인할 수 없습니다"

저는 ServiceStack 3.9.48과 AutoFac 4.6.0을 사용하여 REST 서비스를 개발했습니다.

이 코드는 잘 작동하고, 조건이 만족되지 않은 경우 예외를 로깅 볼 수

public AppHost() 
     :base("My Service Host", typeof(NotificationService).Assembly) 
    { 
     var builder = new ContainerBuilder(); 
     builder.RegisterType<ConfigurationProvider>().As<IConfigurationProvider>(); 
     builder.RegisterType<Logging>().As<ILogging>(); 

     IoCContainer = builder.Build();    
    } 

    public override void Configure(Container container) 
    { 
     using (var scope = IoCContainer.BeginLifetimeScope()) 
     { 
      var _logging = scope.Resolve<ILogging>(); 

      JsConfig.EmitCamelCaseNames = true; 

      base.RequestFilters.Add(delegate (IHttpRequest req, IHttpResponse res, object dto) 
      { 
       HandleUncaughtExceptionDelegate uncaughtExceptionDelegate = null; 
       if (DateTime.Now.Year <= 2019) 
       { 
        if (uncaughtExceptionDelegate == null) 
        { 
         uncaughtExceptionDelegate = delegate (IHttpRequest request, IHttpResponse response, string operationName, Exception ex) 
         { 
          res.StatusCode = 0x191; 
          res.Write("Error: This service is unavailable till 2019: " + operationName); 
         }; 
        } 
        base.ExceptionHandler = uncaughtExceptionDelegate; 
        HttpResponse originalResponse = res.OriginalResponse as HttpResponse; 
        originalResponse.SuppressFormsAuthenticationRedirect = false; 
        res.End(); 
       } 
      }); 

      base.ServiceExceptionHandler = delegate (object request, Exception exception) 
      { 
       _logging.Log(exception); 
       return DtoUtils.HandleException(this, request, exception); 
      }; 
     } 
    } 
AppHostBase

에서 상속 AppHost의 코드는 다음. 나는 다음과 같은 호출합니다되는 API 엔드 포인트로 전화를 걸하려고 할 때

그러나 문제가있다 :

public class NotificationService: Service 
{ 
    private IConfigurationProvider _configurationProvider; 
    public NotificationService(IConfigurationProvider _configurationProvider) 
    { 
     _configurationProvider = configurationProvider; 
    } 

    public object Post(SendEventNotification request) 
    { 
     return new SendEventNotificationResponse { SentStatus = SendNotification(_configurationProvider.GetValue("EncId")) }; 
    } 
} 

이 말을 나에게 오류를 제공 -

형 IConfigurationProvider의

필수 의존성 을 해결할 수 없습니다.

아무도 이유를 제시 할 수 있습니까? 나는 AppHost 동안 초기화 된 인스턴스가 지속되지 않았다고 믿는다.

확실한 것은 있지만 뭔가 빠져 있지만 알아낼 수는 없습니다.

이 문제에 대한 도움을 주시면 감사하겠습니다.

감사와 안부,

Nirman

답변

2

나는 단지 ServiceStack의 문제를 알아 냈어. Servicestack 자체가 DI 해상도를 제공하므로 Autofac을 사용할 필요가 없습니다. 또한 ServiceStack의 Container 객체에 대해 "RegisterAutoWiredAs"메소드를 사용해야했습니다.

관련 문제