0

WCF サービスが定義された ASP.NET MVC 2 アプリケーションがあります (別のプロジェクトのサービスを使用する .svc ファイル)。web.config WCF セクションは次のようになります。

<system.serviceModel>
<behaviors>
  <endpointBehaviors>
    <behavior name="RecordServiceAspNetAjaxBehavior">
      <enableWebScript />
    </behavior>
  </endpointBehaviors>
  <serviceBehaviors>
    <behavior name="HttpGetEnabledBehaviors" >
      <!-- Add the following element to your service behavior configuration. -->
        <serviceMetadata httpGetEnabled="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
  multipleSiteBindingsEnabled="true" />
<services>
  <service name="RecordService" behaviorConfiguration="HttpGetEnabledBehaviors">
    <endpoint address="" behaviorConfiguration="RecordServiceAspNetAjaxBehavior"
      binding="webHttpBinding" contract="RecordService" />
    <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
  </service>
</services>   

問題は、ブラウザで RecordService.svc を開いた後も、「このサービスのメタデータ公開は現在無効になっています」というメッセージが表示されることです。メッセージ...どうすれば wsdl/mex を有効にできますか?

4

3 に答える 3

1

WebHttpBinding は WSDL を生成しません: http://social.msdn.microsoft.com/forums/en-US/wcf/thread/76757ad7-1877-4f62-b80f-74e577aaeacc

BasicHttpBinding を使用して 2 番目のサービス エンドポイントを追加し、それを WSDL に使用することを検討してください。

于 2010-09-14T20:30:01.337 に答える
0

WSDL は SOAP 仕様の一部です。SOAPバインディングとして公開しないため、WSDLはありません。ただし、まだmexHttpBindingを使用できます。詳細については、この投稿をお読みください。

于 2010-09-14T20:37:08.140 に答える
0

構成はまったく使用されません。代わりに、デフォルトの SOAP エンドポイントが使用されます。表示されるページは SOAP ベースのサービスのデフォルト ページであり、サービスでメタデータがオンになっていないことが示されています。しかし、SOAP ベースのサービスは必要ありません。構成では、REST JSON エンドポイントを定義する SOAP エンドポイントが定義されていません。その理由は、おそらく service 要素の name 属性と、最初の endpoint 要素の contract 属性にあります。サービスの完全な名前 (名前空間を含む) とコントラクトの完全な名前を使用する必要があります。.svc ファイルを確認してください。既に別のアセンブリからのサービスの種類を指している必要があります。

于 2010-09-14T20:38:55.243 に答える