2010-05-17 3 views
1

IIS에서 "SimpleWCF"라는 내 WCF 서비스를 호스팅하는 경우. 내 브라우저에서 수동으로 탐색하는 동안 다음과 같은 오류가 발생합니다.
메타 데이터 오류 - WCF

계약 이름 '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> 

답변

2

, 당신은 이름 당신의 행동에을 유효 줄 필요가! 당신의 <service> 태그에서

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

을 , 각 서비스는 서비스 동작을 가져옵니다.

+0

(+1) 당신은 맨 마크입니다. 이름 속성을 모두 제거 할 때까지 동일한 문제가 발생했습니다. – capdragon

관련 문제