参照しましたが、カスタムWCF動作拡張要素タイプが見つからないのはなぜですか?; しかし、以下は別の質問です
以下に示すように、カスタムのBehaviorExtensionElementがあります。サービスの実行中に、コンストラクターが呼び出されます。ただし、CreateBehavior()メソッドは呼び出されません。したがって、私のIEndpointBehaviorは構築されていません。
サービスは例外なく正常に動作します。
CreateBehavior()メソッドが呼び出されない理由はありますか?
注:からWebサービスアプリケーションを実行していますVisual Studio 2010。
構成
  <endpointBehaviors>
    <behavior name="EndpointBehavior">
      <XMessageValidator validateRequest="True" validateReply="true" validateWSE="true">
      </XMessageValidator>
    </behavior>
  </endpointBehaviors>
 //Other config entries
<extensions>
  <behaviorExtensions>
    <add name="XMessageValidator" type="MessageInspectorLibrary.ValidationBehaviorExtensionElement, MessageInspectors, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
  </behaviorExtensions>
</extensions>
BehaviorExtensionElement
public class ValidationBehaviorExtensionElement : BehaviorExtensionElement
{
    public ValidationBehaviorExtensionElement()
    {
        //Constructor
    }
    public override Type BehaviorType 
    { 
        get
        {
            return typeof(MessageValidationBehavior);
        } 
    }
    protected override object CreateBehavior()
    {
        throw new Exception("My CreateBehavior");
        return null;
    }
    [ConfigurationProperty("validateRequest", DefaultValue = false, IsRequired = false)]
    public bool ValidateRequest
    {
        get { return (bool)base["validateRequest"]; }
        set { base["validateRequest"] = value; }
    }
    [ConfigurationProperty("validateReply", DefaultValue = false, IsRequired = false)]
    public bool ValidateReply
    {
        get { return (bool)base["validateReply"]; }
        set { base["validateReply"] = value; }
    }
    [ConfigurationProperty("validateWSE", DefaultValue = false, IsRequired = false)]
    public bool ValidateWSE
    {
        get { return (bool)base["validateWSE"]; }
        set { base["validateWSE"] = value; }
    }
}
IEndpointBehavior
public class MessageValidationBehavior : IEndpointBehavior
{
    XmlSchemaSet schemaSet; 
    bool validateRequest; 
    bool validateReply;
    bool validateWSE;
    public MessageValidationBehavior(XmlSchemaSet schemaSet, bool inspectRequest, bool inspectReply, bool inspectWSE)
    {
        this.schemaSet = schemaSet;
        this.validateReply = inspectReply;
        this.validateRequest = inspectRequest;
        this.validateWSE = inspectWSE;
        throw new Exception("My MessageValidationBehavior");
    }
    #region IEndpointBehavior Members
    public void AddBindingParameters(ServiceEndpoint endpoint, System.ServiceModel.Channels.BindingParameterCollection bindingParameters)
    {
    }
    public void ApplyClientBehavior(ServiceEndpoint endpoint, System.ServiceModel.Dispatcher.ClientRuntime clientRuntime)
    {
        ValidationMessageInspector inspector = new ValidationMessageInspector(schemaSet, validateRequest, validateReply, validateWSE, true);
        clientRuntime.MessageInspectors.Add(inspector);
    }
    public void ApplyDispatchBehavior(ServiceEndpoint endpoint, System.ServiceModel.Dispatcher.EndpointDispatcher endpointDispatcher)
    {
        ValidationMessageInspector inspector = new ValidationMessageInspector(schemaSet, validateRequest, validateReply, validateWSE, false);
        endpointDispatcher.DispatchRuntime.MessageInspectors.Add(inspector);
    }
    public void Validate(ServiceEndpoint endpoint)
    {
    }
    #endregion
}
参考文献
