Ошибка конечной точки IMetadataExchange MEX при размещении службы WCF в консольном приложении - PullRequest
3 голосов
/ 21 августа 2009

У меня есть сервис WCF. Я пытаюсь разместить службу в консольном приложении.

Я следую всем указаниям здесь .

Теперь все отлично компилируется, но я получаю исключение во время выполнения.

Не удалось найти имя контракта IMetadataExchange в списке контрактов, реализованных сервисом Indexer. Добавьте ServiceMetadataBehavior в файл конфигурации или непосредственно в ServiceHost, чтобы включить поддержку этого контракта.

Теперь по указаниям мне поручено добавить

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

У меня нет ни одного IMetadataExchange ни в моей службе WCF, ни в приложении консоли хоста.

Откуда исходит исключение? Есть ссылка, по которой я скучаю?

Это моя консольная программа

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();
            }
        }
    }
}

Моя служба WCF просто имеет интерфейс с контрактами, а затем реализацию в классе myservice.

Ниже весь мой app.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>

1 Ответ

4 голосов
/ 21 августа 2009

Конечная точка mex имеет неверный атрибут для адреса ... это должен быть адрес, а не имя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...