Ошибка запуска хоста WCF - PullRequest
       21

Ошибка запуска хоста WCF

0 голосов
/ 04 ноября 2011

Я хочу запустить следующую службу WCF:

<system.serviceModel>
  <services>
   <service name="MTPlatform">
      <endpoint address="TradingService" behaviorConfiguration="ServiceBehaviour"
               binding="netNamedPipeBinding"  
               bindingConfiguration="NetNamedPipeBinding_IGenericTradingInterface"
               contract="GenericTradingInterface.IGenericTradingInterface"
               name="TradingService"  />
      <endpoint address="mex" binding="mexNamedPipeBinding" contract="IMetadataExchange" />
      <host>
        <baseAddresses>
           <add baseAddress="net.pipe://localhost" />
        </baseAddresses>
        <timeouts closeTimeout="00:00:02" openTimeout="00:00:20" />
      </host>
   </service>
  </services>
  <bindings>
     <netNamedPipeBinding>
        <binding name="NetNamedPipeBinding_IGenericTradingInterface"
                 closeTimeout="00:05:20" openTimeout="00:00:20" receiveTimeout="05:20:00"
                 sendTimeout="00:10:00" transactionFlow="false" transferMode="Buffered"
                 transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard"
                 maxBufferPoolSize="2147483646" maxBufferSize="2147483646" maxConnections="10"
                 maxReceivedMessageSize="2147483646">
              <readerQuotas maxDepth="2147483646" maxStringContentLength="2147483646"
                            maxArrayLength="2147483646" maxBytesPerRead="2147483646" 
                            maxNameTableCharCount="2147483646" />
              <security mode="Transport">
                 <transport protectionLevel="EncryptAndSign" />
              </security>
         </binding>
     </netNamedPipeBinding>
   </bindings>
   <behaviors>
       <endpointBehaviors>
           <behavior name="ServiceBehaviour">
               <dataContractSerializer maxItemsInObjectGraph="2147483646" />
           </behavior>
       </endpointBehaviors>
       <serviceBehaviors>
           <behavior name="MetaDataBehavior">
                <serviceMetadata />
           </behavior>
       </serviceBehaviors>
   </behaviors>
</system.serviceModel>

Это не с:

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

Я не вижу здесь больших ошибок, где можно найти IMetadataExchange?

Спасибо

Юрген

1 Ответ

2 голосов
/ 04 ноября 2011

Вам необходимо сослаться на поведение службы под названием "MetaDataBehavior" в вашем элементе <service>.Кроме того, ради здравомыслия других разработчиков в вашей команде, пожалуйста, не имейте поведение конечной точки с именем " ServiceBehaviour " - это вызывает проблемы:)

<system.serviceModel>
<services> 
 <service name="MTPlatform" behaviorConfiguration="MetaDataBehavior"> 
  <endpoint address="TradingService" behaviorConfiguration="IncreaseMIIOGEndpointBehaviour" 
   binding="netNamedPipeBinding" bindingConfiguration="NetNamedPipeBinding_IGenericTradingInterface" 
   name="TradingService" contract="GenericTradingInterface.IGenericTradingInterface" /> 
  <endpoint address="mex" binding="mexNamedPipeBinding" contract="IMetadataExchange" /> 
  <host> 
   <baseAddresses> 
    <add baseAddress="net.pipe://localhost" /> 
   </baseAddresses> 
   <timeouts closeTimeout="00:00:02" openTimeout="00:00:20" /> 
  </host> 
 </service> 
</services> 
<behaviors> 
 <endpointBehaviors> 
  <behavior name="IncreaseMIIOGEndpointBehaviour"> 
   <dataContractSerializer maxItemsInObjectGraph="2147483646" /> 
  </behavior> 
 </endpointBehaviors> 
 <serviceBehaviors> 
  <behavior name="MetaDataBehavior"> 
   <serviceMetadata /> 
  </behavior> 
 </serviceBehaviors> 
</system.serviceModel>
...