0

我知道此服务中的所有操作都需要相同的 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 来实现此功能?

4

1 回答 1

2

我没有尝试过,但我认为您可以按如下方式访问 DispatchOperation:

  • serviceHostBase.ChannelDispatchers(获取ChannelDispatchers的集合)

  • ChannelDispatcher.Endpoints(获取 ChannelDispatcher 的端点)

  • Endpoint.DispatchRuntime.Operations(获取端点的操作)

于 2010-11-09T19:05:27.857 回答