以编程方式添加 BehaviorExtensionElement



我有一个以编程方式创建的ServiceHost,我想给它添加一个Behaviour。我可以使用host.Description.Behaviors.Add()添加行为,但我找不到添加BehaviorExtensionElement部分的方法。有一个host.Extensions集合,但它接受ServiceHostBase。基本上我想将这个web.config部分转换为代码:

<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceDebug includeExceptionDetailInFaults="false" />
<errorHandler />
</behavior>
</serviceBehaviors>
</behaviors>
<extensions>
<behaviorExtensions>
<add name="errorHandler" type="MyService.ErrorHandlerBehaviorExtensionElement, MyService" />
</behaviorExtensions>
</extensions>
</system.serviceModel>

服务行为

实现 IServiceBehavior 的服务行为是修改整个服务运行时的主要机制。有三种机制可用于向服务添加服务行为。

  1. 在服务类上使用属性。构造服务主机时,服务主机实现使用反射来发现服务类型的属性集。如果这些属性中的任何一个是 IServiceBehavior 的实现,则它们将添加到 ServiceDescription 上的行为集合中。这允许这些行为参与服务运行时的构造。

  2. 以编程方式将行为添加到服务说明上的行为集合中。这可以通过以下代码行完成:

    服务主机主机 = 新的服务主机(/* 参数/);
    主机。Description.Behaviors.Add(
    /Service Behavior */);

  3. 实现扩展配置的自定义行为扩展元素。这允许使用应用程序配置文件中的服务行为。

所以我认为不需要添加行为和行为扩展元素。 另请检查 :https://msdn.microsoft.com/en-us/library/system.servicemodel.description.iservicebehavior.applydispatchbehavior(v=vs.110).aspx

相关内容

  • 没有找到相关文章

最新更新