L'hôte de service WCF ne trouve aucune métadonnée de service
Je suis en train d'apprendre wcf et actuellement arrivé jusqu'ici, c'.
CS Fichier:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
namespace wcfLib
{
[ServiceContract]
public interface IfaceService
{
[OperationContract]
int wordLen(string word);
}
public class StockService : IfaceService
{
public int wordLen(string word)
{
return word.Length;
}
}
}
Pourtant, quand j'essaie de l'exécuter, il apparaît une erreur:
Service WCF hôte ne peut pas trouver un service de métadonnées...
Aucune idée de ce que cela pourrait être?
Fichier De Config:
<system.serviceModel>
<services>
<service behaviorConfiguration="wcfLib.Service1Behavior" name="wcfLib.Service1">
<endpoint address="" binding="wsHttpBinding" contract="wcfLib.ser">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8732/Design_Time_Addresses/wcfLib/Service1/" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="wcfLib.Service1Behavior">
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
source d'informationauteur Rob
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin d'avoir les lignes suivantes dans votre fichier de configuration:
1) un du comportement en service pour les métadonnées:
2) référence du comportement en service dans le service de configuration de
*Le nom de la valeur dans les balises de service dans le fichier de configuration doit avoir le même nom que la classe qui est de l'exécution du contrat. Rappelez-vous, si le nom de la classe changements, assurez-vous de modifier cette valeur pour correspondre.
3) un point de terminaison pour MEX (échange de métadonnées)
Avec tout cela en place, il faut juste bien! 🙂
J'ai eu exactement le même problème et l'a vigoureusement ma configuration et tout a été en ligne avec les métadonnées des points de terminaison, etc. Le problème? Cette ligne:
La
name
valeur DOIT, DOIT avoir le nom de la physique de la classe qui est de l'exécution du contrat. J'ai oublié... une fois de plus et arbitrairement nommé pensent qu'il pourrait être n'importe quelle chaîne. Ainsi, dans le cas ci-dessus la mise en œuvre de la classe doit être nomméService1
. Si le nom de la classe changements, assurez-vous de modifier cette valeur.C'est comme WCF 101 trucs et je reçois toujours brûlé par elle, même si j'ai été faire de la WCF depuis CTP dans Framework 3.0. Bla...
La façon la plus simple de créer ce problème est tout simplement de re-facteur de votre nom d'interface. Certainement, cela change le nom de l'instance de l'ensemble de votre projet, mais il ne parvient pas à mettre à jour le site web.fichier de configuration. De recréer de créer un nouveau service, renommez votre interface et whack F5, boom, les métadonnées boîte de dialogue apparaît 🙂 La réponse est comme ci-dessus, n'oubliez pas de modifier votre site web.fichier de configuration manuellement.
Ce qui concerne
Il semble que vous devez ajouter un échange de métadonnées d'extrémité:
http://en.csharp-online.net/WCF_Essentials%E2%80%94Metadata_Exchange
Par défaut, Visual Studio va essayer de configuration d'un client/test de l'interface utilisateur pour vous faire joujou avec votre nouveau service. Pour ce faire, il est nécessaire de connaître la structure et les méthodes de vos offres de service. Ce résultat est obtenu par la consommation d'une définition dans la norme WSDL format. Cependant, WCF de ne pas publier ces données par défaut.
Vous devez configurer un metadataexchange comportement de point de terminaison pour acehive.
Publier votre fichier de config ici et nous pouvons vous aider, ou google/pile de recherche pour metadataexchange et wsdl dans WCF
J'ai eu cette erreur parce que mon nom de service était mauvais. À l'aide de netTcpBinding et mexTcpBinding avec httpGetEnabled = Faux alors travaillé.
Si toujours pas de travail afin de supprimer le fichier actuel et de le recréer avec le nom par défaut de l'Application.config, c'est des œuvres.
Vous pouvez également obtenir cette erreur même si vous êtes la création de votre service d'accueil par programme et oublier d'ajouter l' [ServiceContract] et [OperationContract] les attributs de l'interface du contrat.
Je sais que ce une vieille question, mais j'ai pensé que je donnerais à mes 2 cents sur le sujet car il m'est juste arrivé.
J'ai un peu changé ma Plate-forme de construction de "any CPU" à "x86" pour le service web lui-même. La deuxième je l'ai changé pour en revenir à "any CPU", il a résolu le problème.
J'avais Activation HTTP allumé. Assurez-vous que vous l'avez sur.