我目前已經將Ninject裝入WCF應用程序(使用ninject.extensions.wcf),基本工作正常。不過,我已經添加了自定義IDispatchMessageInspector
和IServiceBehavior
以驗證每個服務調用(通過檢查數據庫與某些憑據),但我不完全確定如何讓Ninject在IDispatchMessageInspector中工作。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是單身或爲每個請求一個新的實例? –