IMetadataExchange MEX point de terminaison d'erreur lors de l'hébergement de service WCF dans l'application de la console

J'ai un service WCF. Je suis en train d'héberger le service dans une application console.

Je suis en suivant toutes les directions ici.

Maintenant tout compile bien, mais j'obtiens une exception à l'exécution.

Le contrat nom de "IMetadataExchange" ne peut pas être trouvé dans la liste des contrats mis en œuvre par le service de l'Indexeur. Ajouter un ServiceMetadataBehavior dans le fichier de configuration ou à l'ServiceHost directement pour activer le support de ce contrat.

Maintenant dans les directions, je suis chargé d'ajouter

<endpoint binding="mexHttpBinding" bindingConfiguration=""
name="http://localhost:8080/myservice/MEX/" contract="IMetadataExchange" />

Je n'ai pas IMetadataExchange n'importe où dans mon service WCF ou l'hôte de l'application de la console.

D'où vient l'exception venir? Est-il une référence que je suis absent?

C'est mon programme de console

namespace WcfConsoleHost
{
    class Program
    {
        static void Main(string[] args)
        {
            Type type = typeof(myservice);
            using (ServiceHost host = new ServiceHost(type))
            {

                host.Open();
                Console.WriteLine("The service is available. Press any key...");
                Console.ReadKey();
                host.Close();
            }
        }
    }
}

Mon service WCF a juste une Interface avec les contrats, puis la mise en œuvre dans le myservice classe.

Ci-dessous est toute mon application.config.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.serviceModel>
        <behaviors>
            <serviceBehaviors>
                <behavior name="ServiceBehavior">
                    <serviceMetadata />
                </behavior>
            </serviceBehaviors>
        </behaviors>
        <services>
            <service name="myservice">
                <endpoint address="http://localhost:8080/myservice/"
                 binding="basicHttpBinding"
                    bindingConfiguration="" contract="myservice.Ims" />
                <endpoint binding="mexHttpBinding" bindingConfiguration=""
                 address="http://localhost:8080/myservice/MEX/"
                    contract="IMetadataExchange" />
            </service>
        </services>
    </system.serviceModel>
</configuration>

OriginalL'auteur Matt | 2009-08-21