2010-10-02 6 views
2

G'day les gars,Comment activer la découverte de service WCF lors de l'utilisation de l'activation sans fichier?

Comment est-ce que je vais permettre la découverte de service en utilisant l'activation de service sans fichier de WCF? Avec cette approche, il ne semble pas possible de spécifier des types de point de terminaison explicites ou une behaviorConfiguration?

Ma tentative actuelle est la suivante, mais la découverte de service ne fonctionne pas toujours:

<bindings> 
    <wsHttpBinding> 
    <binding name="Default" transactionFlow="true"> 
     <security mode="Transport"> 
     <transport clientCredentialType="None"> 
     </transport> 
     </security> 
    </binding> 
    </wsHttpBinding> 
</bindings> 

<protocolMapping> 
    <clear/> 
    <add scheme="https" binding="wsHttpBinding" bindingConfiguration="Default" /> 
</protocolMapping> 

<behaviors> 
    <serviceBehaviors> 
    <behavior> 
     <serviceMetadata httpGetEnabled="true"/> 
     <serviceDebug includeExceptionDetailInFaults="true"/> 
     <serviceDiscovery/> 
    </behavior> 
    </serviceBehaviors> 

    <endpointBehaviors> 
    <behavior> 
     <endpointDiscovery enabled="true"> 
     <scopes> 
      <add scope="http://XPS/MvcApplication/Service/"/> 
     </scopes> 
     </endpointDiscovery> 
    </behavior> 
    </endpointBehaviors> 
</behaviors> 

<serviceHostingEnvironment multipleSiteBindingsEnabled="true"> 
    <serviceActivations> 
    <add service="RegistrationService" factory="Core.ServiceModel.Activation.ServiceHostFactory" relativeAddress="RegistrationService.svc" /> 
    <add service="EventService" factory="Core.ServiceModel.Activation.ServiceHostFactory" relativeAddress="EventService.svc" /> 
    <add service="ShoppingService" factory="Core.ServiceModel.Activation.ServiceHostFactory" relativeAddress="ShoppingService.svc" /> 
    </serviceActivations> 
</serviceHostingEnvironment> 
+0

Les services sont-ils en cours d'exécution? (c'est-à-dire que vous pouvez parcourir la page de service) –

Répondre

0

Essayez d'ajouter ceci au web.config.

<behaviors> 
    <serviceBehaviors> 
    <behavior name=""> 
     <serviceMetadata httpGetEnabled="True"/> 
     <serviceDebug includeExceptionDetailInFaults="False"/> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
+1

Ha! Non, je suis sûr que donner mon comportement de service le nom chaîne vide ne va pas résoudre mon problème ... –

+0

Avez-vous regardé la balise ? –

0

Cette question est d'un an, mais pour le bien des autres qui peuvent avoir cette question, voici la réponse:

Dispite le fait que vous utilisez WCF l'activation de fileless, vous avez encore besoin d'un noeud services dans votre section de configuration system.serviceModel car vous devez ajouter explicitement le point de terminaison de découverte à chaque service que vous souhaitez rendre détectable.

<services> 
    <service name="RegistrationService"> 
    <endpoint binding="wsHttpBinding" contract="IRegistrationService"/> 
    <endpoint kind="udpDiscoveryEndpoint"/> 
    </service> 
</services> 

L'extrait de configuration ci-dessus ajoutera un point de terminaison de découverte à votre RegistrationService (je suppose que vous avez un contrat de service explicite nommé IRegistrationService).

Notez également qu'avec l'ajout d'un nœud de configuration de service pour RegistrationService, vous devez ajouter explicitement tous les points de terminaison de données.

Questions connexes