【发布时间】:2015-05-20 18:41:11
【问题描述】:
我目前已将 Ninject 安装到 WCF 应用程序中(使用 ninject.extensions.wcf),并且基本工作正常。但是,我添加了自定义 IDispatchMessageInspector 和 IServiceBehavior 以验证每个服务调用(通过根据某些凭据检查数据库),但我不完全确定如何让 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
}
我在网上搜索了一些例子,但我似乎找不到任何东西。这甚至可能吗?
【问题讨论】: