2010-09-14 25 views
0

J'ai une application ASP.NET MVC 2 avec le service WCF défini dans ce fichier (fichier .svc utilisant le service d'un projet différent). section web.config WCF ressemble à ceci:Comment exposer le point de terminaison de métadonnées WCF4 dans l'application ASP.NET MVC 2

<system.serviceModel> 
<behaviors> 
    <endpointBehaviors> 
    <behavior name="RecordServiceAspNetAjaxBehavior"> 
     <enableWebScript /> 
    </behavior> 
    </endpointBehaviors> 
    <serviceBehaviors> 
    <behavior name="HttpGetEnabledBehaviors" > 
     <!-- Add the following element to your service behavior configuration. --> 
     <serviceMetadata httpGetEnabled="true" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" 
    multipleSiteBindingsEnabled="true" /> 
<services> 
    <service name="RecordService" behaviorConfiguration="HttpGetEnabledBehaviors"> 
    <endpoint address="" behaviorConfiguration="RecordServiceAspNetAjaxBehavior" 
     binding="webHttpBinding" contract="RecordService" /> 
    <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" /> 
    </service> 
</services> 

Le problème est que, après l'ouverture dans le navigateur RecordService.svc je reçois toujours « la publication des métadonnées pour ce service est actuellement désactivé. » message ... comment puis-je activer wsdl/mex?

+1

Je ne pense pas qu'un service REST (utilisant webHttpBinding) ait des métadonnées/WSDL à publier ..... –

Répondre

0

Comme vous ne l'exposez pas en tant que liaison SOAP, il n'y a pas de WSDL. Vous pouvez toujours utiliser mexHttpBinding. Lisez this post pour plus d'informations.

0

Votre configuration n'est pas utilisée du tout. Le point de terminaison SOAP par défaut est utilisé à la place. La page que vous voyez est la page par défaut du service basé sur SOAP et indique que les métadonnées de votre service ne sont pas activées. Mais vous ne voulez pas de service basé sur SOAP. Votre configuration ne définit aucun point de terminaison SOAP. Elle définit le point de terminaison JSON REST. La raison est très probablement dans l'attribut de nom de l'élément de service et de l'attribut de contrat du premier élément de point de terminaison. Vous devez utiliser le nom complet (avec les espaces de noms) du service et le nom complet du contrat. Vérifiez votre fichier .svc. Il devrait déjà pointer vers votre type de service d'assemblage différent.