2016-12-09 1 views
0

J'essaie de créer un service WCF accessible via HTTP et les canaux nommés. Après avoir changé la configuration par défaut (j'ai ajouté netNamedPipeBinding et endpoint), je ne peux plus consommer le service WCF. Quelque chose doit être faux avec mon Web.config.WCF ne peut pas obtenir de métadonnées

Edit:

J'ai oublié de poster l'erreur que je reçois:

Error: Cannot obtain Metadata from http://localhost/WebServices/CreateContent.svc

If this is a Windows (R) Communication Foundation service to which you have access, please check that you have enabled metadata publishing at the specified address.

Web.config

<system.serviceModel> 
    <services> 
     <service name="Application.WebServices.CreateContent" behaviorConfiguration="behave"> 
     <endpoint binding="basicHttpBinding" bindingConfiguration="basicHttpBinding" 
      name="basicHttp" contract="Application.WebServices.ICreateContent" /> 
     <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="mexHttpBinding" 
      name="mexHttp" contract="IMetadataExchange" /> 
     <endpoint binding="netNamedPipeBinding" bindingConfiguration="netNamedPipeBinding" 
      name="netNamedPipe" contract="PTUmbraco.WebServices.ICreateContent" /> 
     <endpoint binding="mexNamedPipeBinding" bindingConfiguration="mexNamedPipeBinding" 
      name="mexNamedPipe" contract="IMetadataExchange" /> 
     <host> 
      <baseAddresses> 
      <add baseAddress="http://localhost/WebServices/CreateContent.svc" /> 
      </baseAddresses> 
     </host> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="behave"> 
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="false" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /> 
    <bindings> 
     <basicHttpBinding> 
     <binding name="basicHttpBinding" maxBufferSize="10485760" maxReceivedMessageSize="10485760" /> 
     </basicHttpBinding> 
     <netNamedPipeBinding> 
     <binding name="netNamedPipeBinding" /> 
     </netNamedPipeBinding> 
     <mexHttpBinding> 
     <binding name="mexHttpBinding" /> 
     </mexHttpBinding> 
     <mexNamedPipeBinding> 
     <binding name="mexNamedPipeBinding" /> 
     </mexNamedPipeBinding> 
    </bindings> 
    </system.serviceModel> 
+0

Quelle erreur obtenez-vous? – Stormhashe

Répondre

0

Je vais essayer de répondre le mieux Je peux, puisque vous n'avez pas posté quelle erreur vous obtenez.

Avez-vous vérifié si votre service Net.Pipe Listener Adapter est opérationnel?

enter image description here

Si l'erreur que vous obtenez est « le message n'a pas pu être envoyé parce que le service à l'adresse de point de terminaison est indisponible pour le protocole de l'adresse », eux, vous pourriez avoir à utiliser le ServiceModel Inscription outil de Microsoft, en exécutant cette commande sur le dossier de votre cadre:

C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319> ServiceModelReg.exe -r

I J'ai déjà eu quelques problèmes avec la WCF, et comme vous, je pensais que c'était un problème de configuration, mais votre config semble être bien, alors vous pouvez essayer.

est ici plus d'informations sur cet outil de ServiceModel:

https://forums.asp.net/t/2039313.aspx?WCF+TCP+Binding+Hosted+in+IIS+7+endpoint+address+is+unavailable+for+the+protocol+of+the+address

+0

Merci pour votre aide. L'erreur que j'obtiens est: 'Erreur: Impossible d'obtenir des métadonnées à partir de http: // localhost/WebServices/CreateContent.svc.' . Avant les changements apportés à la config (ajout de points de terminaison, attribution d'un nom au nom et ajout des liaisons pour le NamedPipe), j'ai pu accéder au Service via HTTP (testé avec le WcfTestClient et mon propre client). Après avoir édité la config je ne peux plus y accéder du tout. C'est pourquoi je suis sûr que j'ai fait une erreur dans le fichier de configuration. –