嗨,我有自己的 ServiceBehavior:
public class StructureMapServiceBehavior : IServiceBehavior
{
public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
foreach (ChannelDispatcherBase cdb in serviceHostBase.ChannelDispatchers)
{
ChannelDispatcher cd = cdb as ChannelDispatcher;
if (cd != null)
{
foreach (EndpointDispatcher ed in cd.Endpoints)
{
ed.DispatchRuntime.InstanceProvider =
new StructureMapInstanceProvider(serviceDescription.ServiceType);
}
}
}
}
public void AddBindingParameters(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase, Collection<ServiceEndpoint> endpoints, BindingParameterCollection bindingParameters)
{
}
public void Validate(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
}
}
如何使用 WCF 配置工具将其添加到 App.config 中?
:
最佳答案
创建一个继承自BehaviorExtensionElement
的类:
public class StructureMapServiceBehaviorElement : BehaviorExtensionElement
{
public override Type BehaviorType
{
get { return typeof(StructureMapServiceBehavior ); }
}
protected override object CreateBehavior()
{
return new StructureMapServiceBehavior ();
}
}
然后在配置文件中注册您的扩展:
<behaviorExtensions>
<add name="timeService" type="YourAssembly.StructureMapServiceBehaviorElement ,
YourAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</behaviorExtensions>
完成后,您可以像使用其他扩展程序一样使用您的扩展程序。
编辑:使用配置工具来完成它,它是类似的。创建上述类后,在 WCF 配置工具的扩展部分中注册您的行为(高级->扩展->行为元素扩展)
关于WCF:如何将自定义 ServiceBehavior 添加到 WCF 配置中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6201249/