У меня есть сервис 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>