3

WCF 서비스가 있습니다. 콘솔 응용 프로그램에서 서비스를 호스팅하려고합니다.콘솔 응용 프로그램에서 WCF 서비스를 호스팅 할 때 IMetadataExchange MEX 끝점 오류가 발생했습니다.

모든 지시 사항을 따르고 있습니다. here.

이제는 모든 것이 잘 컴파일되지만 런타임에 예외가 발생합니다.

서비스 인덱서가 구현 한 계약 목록에서 계약 이름 'IMetadataExchange'을 (를) 찾을 수 없습니다. 이 계약에 대한 지원을 사용하려면 ServiceMetadataBehavior를 구성 파일이나 ServiceHost에 직접 추가하십시오. 방향으로 지금

는, 나는

<endpoint binding="mexHttpBinding" bindingConfiguration="" 
name="http://localhost:8080/myservice/MEX/" contract="IMetadataExchange" /> 

내가 내 WCF 서비스 나 호스트 콘솔 응용 프로그램에서 어디 IMetadataExchange이없는 추가 지시를 받았다.

어디에서 예외가 발생합니까? 누락 된 참조가 있습니까?

이 내 WCF 서비스가 바로 계약 후 MYSERVICE 클래스의 구현과 인터페이스를 가지고

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(); 
      } 
     } 
    } 
} 

내 콘솔 프로그램입니다.

다음은 전체 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> 

답변

4

mex 끝점에는 주소에 대한 잘못된 특성이 있습니다. 이름이 아닌 주소 여야합니다.

+0

나는 그것을 고쳤다! 또한 나는 실제로 그것이 behiquation = "IndexerServiceBehavior"서비스 태그에서 누락되었다고 생각합니다. – Matt

관련 문제