Я несколько раз пытался сделать так, чтобы моя служба WCF выставляла метаданные. Вместо этого я сохраняю исключение:
Название контракта 'IMetadataExchange'
не может быть найден в списке
контракты, реализованные сервисом
SecurityBroker . Добавьте ServiceMetadataBehavior к
файл конфигурации или к
ServiceHost напрямую для включения поддержки
для этого контракта.
... при ручном просмотре службы с помощью IE.
(Я предполагаю, что это та же самая причина, по которой мое клиентское приложение не может сгенерировать ссылку на сервис. Детские шаги и все)
И все же мой web.config выглядит нормально:
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<behaviors>
<endpointBehaviors>
<behavior name="webHttpEnablingBehaviour">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="webHttpEnablingBehaviour">
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="IWW.MIGTurbo2.WCF.Security.SecurityBroker">
<endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
<endpoint address=""
binding="webHttpBinding"
bindingConfiguration="default"
contract="IWW.MIGTurbo2.WCF.Security.ISecurityBroker"
behaviorConfiguration="webHttpEnablingBehaviour">
</endpoint>
</service>
</services>
<client />
<bindings>
<webHttpBinding>
<binding name="default" />
</webHttpBinding>
</bindings>
</system.serviceModel>
Итак, мой IMetadataExchange контракт определен с mex в порядке и подключен, насколько я вижу. Я что-то упустил ненормальный?
Редактировать
Определение моего сервиса показано ниже, если это полезно:
<%@ ServiceHost Language="C#" Debug="true" Service="IWW.MIGTurbo2.WCF.Security.SecurityBroker" Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory" %>