웹 및 작업자 역할이있는 Windows Azure 클라우드 서비스가 있습니다. 두 역할 모두 구성 루트에있는 Unity 컨테이너를 사용하여 유형을 등록합니다 (이 게시물의 최신 nuget pkg).Windows Azure 클라우드 서비스에 대한 Unity IOC와의 종속성을 해결할 때 생성자에서 NullReferenceException이 발생했습니다.
Azure 에뮬레이터에서 디버깅 할 때이 코드가 훌륭하게 작동하지만 패키지를 만들고 클라우드 서비스를 배포하면 역할이 실행될 때 즉시이 오류가 발생합니다 (웹 역할이 문제의 유형에 의존하는 페이지를 쳤을 때, 작업자 역할은 즉시 실행시에 히트됩니다). 여기
[ResolutionFailedException: Resolution of the dependency failed, type = "MyApp.Mvc.Controllers.HomeController", name = "(none)".
Exception occurred while: Calling constructor MyApp.Azure.Messaging.ServiceBusMessagingClient(System.String serviceBusConnectionString).
Exception is: NullReferenceException - Object reference not set to an instance of an object.
는 애저 서비스 버스에 대한 래퍼 클라이언트입니다 내 타입의 ctor에있는 코드입니다 :
public ServiceBusMessagingClient(string serviceBusConnectionString)
{
Guard.NotNullOrEmpty(() => serviceBusConnectionString, serviceBusConnectionString);
_log = LogFactory.GetCurrentClassLogger();
ConnectionString = serviceBusConnectionString;
_msgFactory = MessagingFactory.CreateFromConnectionString(ConnectionString);
_retryPolicy = new RetryPolicy<ServiceBusTransientErrorDetectionStrategy>(RetryStrategy.DefaultClientRetryCount);
_clients = new Dictionary<string, QueueClient>();
}
그리고 여기에있어 다음과 같이
나는 NullReferenceException이 무엇입니까 웹 app_start 또는 작업자 역할의 OnStart에서 호출되는 부트 스트 래퍼의 코드 :
var sbConn = CloudConfigurationManager.GetSetting(Constants.KeyServiceBusConnectionString);
container.RegisterType<IMessagingClient, ServiceBusMessagingClient>(new InjectionConstructor(sbConn));
누구나 왜 그런 예외가 생겼는지 말해 줄 수 있습니까? null 참조를 생성 할 수있는 코드를 ctor 코드에서 볼 수 없습니다. 그리고 왜 그것이 에뮬레이터에서 작동하지만 클라우드 배치에서는 작동하지 않는지 이해할 수 없습니다. 이미 연결 문자열이 있는지 확인하기 위해 클라우드 설정을 확인했습니다. 감사!