mexHttpBinding - Ajoute un ServiceMetadataBehavior au fichier de configuration ou au ServiceHost directement pour permettre la prise en charge de ce contrat
Je sais que cela a été demandé de nombreuses fois, et a répondu à de nombreuses reprises, mais, tous les échantillons que devrait être de travail ne semblent pas vouloir travailler pour moi aujourd'hui.
Lorsque je tente de démarrer l'hôte, je reçois l'erreur suivante:
"Le contrat nom de "IMetadataExchange" ne peut pas être trouvé dans la liste des contrats mis en œuvre par le service TraceService. Ajouter un ServiceMetadataBehavior dans le fichier de configuration ou à l'ServiceHost directement pour activer le support de ce contrat".
Mon service est hébergé dans un service windows géré hôte comme par Microsoft exemple: http://msdn.microsoft.com/en-us/library/ms733069%28v=vs.90%29.aspx
Et voici ma belle et simple config:
<system.serviceModel>
<services>
<service name="Daff.Lae.Service.TraceService">
<endpoint address="" binding="wsHttpBinding" name="TraceService" contract="Contracts.Service.ITraceService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/TraceService" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="DefaultBehavior">
<serviceDebug includeExceptionDetailInFaults="true"/>
<serviceMetadata httpGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
Bien sûr, le problème devient plus intéressant quand il n'y a pas d'erreurs si je supprime cette ligne:
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
Toute aide serait très très très grandement apprécié 🙂
source d'informationauteur agAus
Vous devez vous connecter pour publier un commentaire.
Assurez-vous de spécifier un
behaviorConfiguration
dans leservice
élément de votre configuration afin de permettre soithttpGet
ouhttpsGet
.Je vois que vous avez déjà défini un serviceBehavior nommé
DefaultBehavior
- maintenant, tout ce que vous devez faire est d'ajouterbehaviorConfiguration="DefaultBehavior"
à laservice
élément, de sorte que la ligne devient:Si vous n'avez pas explicitement spécifier un comportement pour votre service, HTTP Obtient et HTTPS Obtient sont interdites par défaut, et vos métadonnées ne seront pas exposées.
Que vous êtes à l'aide de WS-Http, vous lient à un protocole HTTPS, vous devez utiliser la bonne MEX de liaison;
et modifier le baseaddress à un https.
Ou (dans l'autre sens) de convertir votre wsHttp de la liaison à un basicHttp de liaison, et les choses vont commencer à travailler pour vous.