2009-05-18 7 views
5

私のWCFサービスでMetaDataが公開されているのを何度も試みました。代わりに、私は例外を保ち続ける:WCF MetaDataが機能しない

契約名「IMetadataExchange」 がサービス SecurityBrokerによって実装 契約のリストに見つかりませんでした。 ServiceMetadataBehaviorを 構成ファイルまたは ServiceHostに直接追加して、この契約のサポート を有効にします。

... IEを使用してサービスを手動で参照しているとき。

(私はこれが私のクライアントアプリケーションは、サービス参照を生成することができない理由と同じ理由で想定していますベイビーステップとすべて。)

そして、まだ私のweb.configファイルは大丈夫になります

<system.serviceModel> 
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 
<behaviors> 
    <endpointBehaviors> 
     <behavior name="webHttpEnablingBehaviour"> 
      <webHttp /> 
     </behavior> 
    </endpointBehaviors> 
    <serviceBehaviors> 
     <behavior name="webHttpEnablingBehaviour"> 
      <serviceMetadata httpGetEnabled="true" /> 
     </behavior> 
    </serviceBehaviors> 
</behaviors> 
<services> 
    <service name="IWW.MIGTurbo2.WCF.Security.SecurityBroker"> 
     <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" /> 
     <endpoint address="" 
      binding="webHttpBinding" 
      bindingConfiguration="default" 
      contract="IWW.MIGTurbo2.WCF.Security.ISecurityBroker" 
       behaviorConfiguration="webHttpEnablingBehaviour"> 
     </endpoint> 
    </service> 
</services> 
<client /> 
<bindings> 
    <webHttpBinding> 
     <binding name="default" /> 
    </webHttpBinding> 
</bindings> 
</system.serviceModel> 

だから私はIMetadataExchangeの契約はmexと定義されており、私が見るところでは繋がっています。私は何か迷ったことがありますか?

編集

これが有用である場合は私のサービスの定義は、以下に示します。

<%@ ServiceHost Language="C#" Debug="true" Service="IWW.MIGTurbo2.WCF.Security.SecurityBroker" Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory" %> 

答えて

9

は、あなたの設定ファイルは、「エンドポイント」要素のbehaviorConfiguration属性を持っていますが、あなたはまた、それを必要とします"サービス"要素

+0

優秀な、それはそれを持っています!どうもありがとう。 –

2

私はすべてにNetTcpBindingを使用しています。私の場合、私は同じ問題を抱えていたし、追加することによってそれを解決:

(a)のbehaviorConfiguration = "" をMEXエンドポイントに

<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" behaviourConfiguration="" /> 

(b)のbehaviorConfigurationは= "MEX" サービスに定義:

<services> 
    <service name="AcmeService" behaviorConfiguration="mex"> 

(c)の振る舞いエントリ

<behaviors> 
    <serviceBehaviors> 
     <behaviour name="mex"> 
      <serviceDebug includeExceptionDetailInFaults="false"/> 
      <serviceMetadata /> 
     </behavior> 
    </serviceBehaviors> 
    </behaviors> 
+0

これは私がupvotedしたので私を助けましたが、includeExceptionDetailInFaulsのincludeeadExceptionDetailInFaultsと言うようにあなたのansewerを修正してください – caa

関連する問題