阻止DiscoveryEndpoint创建服务实例

时间:2010-12-10 07:18:49

标签: wcf ws-discovery

我在WCF中使用DiscoveryEndpoints但是我注意到当发现服务并且联系DiscoveryEndpoint时,它实际上会导致创建服务的实例。我不想要这个。

这几乎肯定与我使用自定义实例提供程序(支持StructureMap)有关 - 它将自定义InstanceProvider应用于每个EndpointDispatcher。

似乎我只想将自定义InstanceProvider应用于其合同实际与服务实现相匹配的端点。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我想我已经解决了......我只是忽略了任何有IsSystemEndpoint设置的东西:

    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)
                {
                    if (!ed.IsSystemEndpoint) // Ignore MEX etc
                        ed.DispatchRuntime.InstanceProvider =
                            new StructureMapInstanceProvider(serviceDescription.ServiceType);
                }
            }
        }
    }