0

WCF REST Web サービス (WCF サービス アプリケーション) を構築しました。Visual Studio 2012 でデバッグすると、WCF テスト クライアント アプリが起動し、Web サービスを追加しようとします。次のエラーが表示されます。

Error: Cannot obtain Metadata from http://localhost:50925/Service1.svc If this is a Windows (R) Communication Foundation service to which you have access, please check that you have enabled metadata publishing at the specified address.  For help enabling metadata publishing, please refer to the MSDN documentation at http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange Error    URI: http://localhost:50925/Service1.svc    Metadata contains a reference that cannot be resolved: 'http://localhost:50925/Service1.svc'.    Content Type application/soap+xml; charset=utf-8 was not supported by service 

上記のリンク先の MSDN ドキュメントにアクセスしましたが、web.config が正しく設定されていると思います。

Web.config:

<?xml version="1.0"?>
<configuration>
<system.web>
 <compilation debug="true" strict="false" explicit="true" targetFramework="4.0" />
</system.web>  
<system.serviceModel>   
<services>
  <service name="Service1" behaviorConfiguration="Service1Behavior">       
    <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex">     </endpoint>
  </service>
</services>  
<behaviors>
  <serviceBehaviors>
    <behavior name="Service1Behavior">
      <serviceMetadata httpGetEnabled="true"/>     
    </behavior>
  </serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
   <modules runAllManagedModulesForAllRequests="true"/>   
</system.webServer>
</configuration>

同じエラー メッセージが引き続き表示されます。私は WCF / VS 2012 と .Net 4.0 は初めてですが、VS2008 .Net 2.0 には精通しています。

4

2 に答える 2

4

WCF RESTサービスはメタデータを公開しないため、そのメッセージが表示されていました(詳細については、このブログ投稿を参照してください)。WCFテストクライアントを使用している場合は、RESTサービスではなく、SOAPサービス(エンドポイント)と通信しています。

RESTfulエンドポイントを有効にする場合は、構成でサービス要素を定義し、その内部でを使用するエンドポイントを定義できます。また、エンドポイントは、動作でエンドポイント動作を指すwebHttpBinding必要があります。behaviorConfiguration<webHttp/>

于 2012-12-08T05:07:05.397 に答える
0

結局のところ、私は新しい WCF プロジェクトを作成し、ここで何が起こっているのかを調べました。VS2012/.Net 4.0 は、エンドポイントが定義されたサービス構成を好みません。これが正常に動作する新しい web.config です。これがなぜなのかを調べる必要がありますが、少なくとも私の質問には答えています。

<?xml version="1.0"?>
<configuration>
<system.web>
 <compilation debug="true" strict="false" explicit="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
 <behaviors>
   <serviceBehaviors>
     <behavior>
       <serviceMetadata httpGetEnabled="true"/>
     </behavior>
   </serviceBehaviors>
 </behaviors>
 <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
  <modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
于 2012-12-07T22:44:35.357 に答える