代码之家  ›  专栏  ›  技术社区  ›  empi

实现ISeviceBehavior会影响服务行为属性吗?

  •  1
  • empi  · 技术社区  · 15 年前

    我有WCF服务。我需要在实现ServiceContract的类中实现ISeviceBehavior。我在那个类上有一些指定服务行为的属性。我想问,在实现了属性中指定的ISeviceBehavior行为之后,是否仍然适用。

    基本上

    [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, 
                     ConcurrencyMode = ConcurrencyMode.Multiple)]
    public class MyService : IMyService
    {
    ...
    }
    

    意思和

    [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, 
                     ConcurrencyMode = ConcurrencyMode.Multiple)]
    public class MyService : IMyService, IServiceBehavior
    {
    ...
    }
    

    同样,我的意思是我仍然有 ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple) .

    我对IServicebehavior的实现如下:

    void AddBindingParameters(ServiceDescription serviceDescription, 
                              ServiceHostBase serviceHostBase, 
                              Collection<ServiceEndpoint> endpoints, 
                              BindingParameterCollection bindingParameters)
    {            
    }
    
    void ApplyDispatchBehavior(ServiceDescription serviceDescription, 
                               ServiceHostBase serviceHostBase)
    {
        IErrorHandler handler = new ErrorHandler();
        foreach (ChannelDispatcher dispatcher in serviceHostBase.ChannelDispatchers)
        {
            dispatcher.ErrorHandlers.Add(handler);
        }
    }
    
    void Validate(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
    {            
    }
    

    我只想实现中心错误处理,不想以任何其他方式更改服务行为。

    谢谢你的帮助。

    1 回复  |  直到 13 年前
        1
  •  2
  •   Brian    15 年前

    是的,ServiceBehaviorAttribute中的行为仍然适用;您的IServiceBehavior只是为您提供了一种进一步定制运行时的方法。

    推荐文章