2010-12-10 18 views
0

J'utilise DiscoveryEndpoints dans WCF, mais j'ai remarqué que lorsqu'un service est découvert et que le DiscoveryEndpoint est contacté, une instance du service sera créée. Je ne veux pas ça.Empêcher DiscoveryEndpoint de créer une instance de service

Cela est presque certainement lié au fait que j'utilise un fournisseur d'instance personnalisé (pour prendre en charge StructureMap) - qui applique un InstanceProvider personnalisé à chaque EndpointDispatcher.

Il semble que je ne souhaite qu'appliquer InstanceProvider pour les points de terminaison dont le contrat correspond réellement à l'implémentation du service.

Des idées?

Répondre

1

Je pense que je travaillais dehors ... Je suis tout simplement ignorant tout ce qui a IsSystemEndpoint ensemble:

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

Merci cela m'a aidé. J'ai continué à obtenir un Incapable de lancer l'exception. – Michael