目前,对于所有wcf操作,我必须在每个方法的顶部放置OperationBehavior属性(用于模拟)。
[OperationBehavior(Impersonation = ImpersonationOption.Allowed)]
将它用于每种方法似乎都是浪费时间。我需要的是消除将行为应用于所有可用操作的必要性。有没有办法将此属性类级别设置为影响该服务类中的所有方法?
答案 0 :(得分:4)
创建自己的实现IServiceBehavior
的属性,并将正确的操作行为应用于所有可用的操作:
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
public class AllowImpersonationAttribtute : Attribute, IServiceBehaviour
{
void IServiceBehavior.ApplyDispatchBehavior(ServiceDescription desc, ServiceHostBase host)
{
var operations = desc.Endpoints.SelectMany(e => e.Contract.Operations);
foreach (var operation in operations)
{
operation.Behaviors.Add(new OperationBehaviorAttribute{Impersonation = ImpersonationOption.Allowed});
}
}
... // remaining methods empty
}