我知道此服务中的所有操作都需要相同的OperationBehavior ..我可以实现一个在运行操作之前执行相同功能的ServiceBehavior吗?
我目前有:
[ServiceContract]
public interface IService
{
[AuthTokenValidation]
[OperationContract]
string DoThis(string authtoken);
}
我想将其替换为:
[AuthTokenValidation]
[ServiceContract]
public interface IService
{
[OperationContract]
string DoThis(string authtoken);
}
在我的AuthTokenValidation属性中,我在ApplyDispatchBehavior方法中有以下代码:
public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
{
AuthTokenInspector inspector;
inspector = new AuthTokenInspector(AuthTokenIndex);
dispatchOperation.ParameterInspectors.Add(inspector);
}
我检查了IServiceBehavior中的ApplyDispatchBehavior方法,但我无法弄清楚如何访问当前被调用的DisppatchOperation。
public void ApplyDispatchBehavior(ServiceDescription serviceDescription, System.ServiceModel.ServiceHostBase serviceHostBase)
{
//Can I reach the OperationDispatch from in here??
}
这是使用ServiceBehavior的正确方法还是我应该对OperationBehaviors感到满意以实现此功能?
答案 0 :(得分:2)
我没有尝试过,但我认为你可以按照以下方式进入DispatchOperation:
serviceHostBase.ChannelDispatchers(获取ChannelDispatcher的集合)
ChannelDispatcher.Endpoints(获取ChannelDispatcher的端点)
Endpoint.DispatchRuntime.Operations(获取端点的操作)