현재 Ninject를 WCF 응용 프로그램에 설치했습니다 (ninject.extensions.wcf 사용). 기본 사항이 올바르게 작동합니다. 그러나 각 서비스 호출 (일부 자격 증명에 대해 데이터베이스 검사)을 인증하기 위해 IDispatchMessageInspector
및 IServiceBehavior
사용자 지정을 추가했지만 IDispatchMessageInspector 내에서 Ninject를 처리하는 방법을 완전히 모르겠습니다.WCF & Ninject - Ninject 커널을 IDispatchMessageInspector 인스턴스로 가져 오기
public class MyServiceInspector: IDispatchMessageInspector
{
#region Methods
public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext)
{
// TODO: Get credentials from request here, and hit database.
return null;
}
public void BeforeSendReply(ref Message reply, object correlationState)
{
// Do nothing
}
#endregion
}
다음과 같이이 시작 IServiceBehavior
:
내가 지금까지 가지고있는 코드는 내가 예를 찾고 인터넷을 샅샅이 한
public class MyServiceBehaviour : Attribute, IServiceBehavior
{
#region Methods
public void AddBindingParameters(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase, Collection<ServiceEndpoint> endpoints, BindingParameterCollection bindingParameters)
{
// Do nothing
}
public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
// Loop through channels and endpoints
foreach (ChannelDispatcher cDispatcher in serviceHostBase.ChannelDispatchers)
{
foreach (EndpointDispatcher eDispatcher in cDispatcher.Endpoints)
{
// Add credentials inspector
eDispatcher.DispatchRuntime.MessageInspectors.Add(new MyServiceInspector());
}
}
}
public void Validate(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
// Do nothing
}
#endregion
}
,하지만 그럴 수 없어 아무것도 찾은 것 같아. 이것은 가능한가?
안녕, 난이 나중에 년 알지만, 나는 MyMessageInspector는 싱글 또는 모든 요청에 대해 새로운 인스턴스가 될 것 궁금하네요 :마지막 단계는 구성은? –