При хостинге моего сервиса WCF под названием "SimpleWCF" на IIS; я получаю следующую ошибку, вручную просматривая его в моем браузере;
Название контракта 'IMetadataExchange' не могло быть найдено в списке контрактов, реализованных сервисом SimpleWCF. Добавьте ServiceMetadataBehavior к конфигурационному файлу или к ServiceHost непосредственно для включения поддержки этого контракта.
Я не могу понять причину этой ошибки [все еще новый].
Вот мой файл конфигурации;
<configuration>
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="LargeData" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
<security mode="None">
</security>
</binding>
</basicHttpBinding>
</bindings>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
<services>
<service name="SimpleWCF">
<endpoint address="http://localhost/Sample/SimpleWCF.svc" binding="basicHttpBinding" bindingConfiguration="LargeData" contract="SimpleWCF"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
</system.serviceModel>
<system.web>
<compilation debug="true"/>
</system.web>
</configuration>
В вашей конфигурации вам нужно дать действительные имена своему поведению!
<behaviors>
<endpointBehaviors>
<behavior name="webBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="serviceBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
и их из вашего тега
, вам необходимо указать это поведение:
<service name="SimpleWCF" behaviorConfiguration="serviceBehavior">
, чтобы оно стало активным.
Если вы используете .NET 4 / WCF 4, вы также можете определить поведение по умолчанию, но тогда вам нужно полностью исключить атрибут name =
:
<behaviors>
<endpointBehaviors>
<behavior>
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
Теперь каждая конечная точка получит это поведение конечной точки, и каждая служба получит поведение службы.