0

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

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

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

有任何想法吗?

4

1 回答 1

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);
                }
            }
        }
    }
于 2010-12-10T07:32:00.217 回答