2010-12-10 67 views
0

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

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

看来我只想为合同实际上与服务实现匹配的端点应用自定义InstanceProvider。

任何想法?

回答

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); 
       } 
      } 
     } 
    } 
+0

谢谢你帮我。我不断收到无法投射异常。 – Michael 2012-12-11 21:17:05