使用多个IOperationBehavior属性时定义优先级

时间:2010-08-25 18:08:39

标签: .net wcf

考虑以下IOperationBehavior属性:

public class OperationCredentialsAttribute : Attribute, IOperationBehavior
{
}

public class OperationProcessesAttribute : Attribute, IOperationBehavior
{
}

...以及以下操作定义:

public interface IService
{
    [OperationCredentials(true)]
    [OperationProcesses(new[] { "CreateCustomerProcess" })]
    CreateCustomerResponse CreateCustomer(CreateCustomerMessage CreateCustomerMessage);
}

我需要确保在OperationProcesses属性之前处理OperationCredentials属性,因为两者都使用ApplyDispatchBehavior方法来注册自定义调用者,并且执行顺序很重要。

从我的测试中,装饰顺序并不总是服务加载时处理它们的顺序。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我认为将属性合并为一个的解决方案是正确的。

本文here讨论了各种扩展机制的优先级,并指出:

  

在任何行为集合中,同样不会保证订单。

集合可能是在方法上定义的一组IOperationBehaviors。