2011-11-04 4 views
0
나는 다음과 같은 WCF 서비스를 실행하려면

:WCF 시작 호스트 오류

계약 이름 'IMetadataExchange'가 구현 계약의 목록 에서 찾을 수 없습니다 :

<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> 

이 실패를 MT5Platform 서비스. 이 계약을 지원하려면 ServiceMetadataBehavior를 구성 파일 또는 ServiceHost에 직접 추가하십시오.

여기서 큰 실수는 보이지 않습니다. 어디에서 IMetadataExchange을 찾을 수 있습니까?

감사합니다,

위르겐

답변

2

당신은 당신의 <service> 요소에 "MetaDataBehavior"라는 서비스 동작을 참조 할 필요가있다. 그 문제에 대해 묻는 데요 :)

<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> 
+0

우수, 들으 - 또한, 팀의 다른 개발자의 정신을 위해서, "ServiceBehaviour"이름을 가진 엔드 포인트 동작을하지 마십시오! ! – Juergen