1

2つのメソッドを持つ小さなWCFソリューションがありますが、ビルド時にこのエラーが発生します。
メッセージを却下せずに残すと、

WCF Service Host cannot find any service metadata. This may cause the client application to run improperly. Please check if metadata is enabled.

構成が間違っていることは間違いありません。おそらく、定義されたエンドポイントが名前空間と一致していませんが、どこに何を設定すればよいかわかりません。

Contractsクラスの名前空間にはJOB_1_0_Service.Contracts、2つのメソッドがあります。このAPP.Configプロジェクトの中には次のものがあります:

<endpoint address="/Address1" binding="wsHttpBinding" contract="JOB_1_0_Service.Contracts.IService">

契約方法は次のように定義されます。

[ServiceContract]
public interface IService
{
    [OperationContract]
    GetNearbyJobsResponse GetNearbyJobs(GetNearbyJobsRequest request);

    [OperationContract]
    GetChildJobsResponse GetChildJobs(GetChildJobsRequest request);
}

実装クラスの名前空間もJOB_1_0_Service.Implementation2つのメソッドを使用しています。

GetNearbyJobsResponse IService.GetNearbyJobs(GetNearbyJobsRequest request)
{
    ...
}

GetChildJobsResponse IService.GetChildJobs(GetChildJobsRequest request)
{
    ...
}

どの設定ファイルに何を入れるべきですか?本当にこれが問題である場合はどうなりますか?

[アップデート]

繰り返しになりますが、1つのソリューションに2つのプロジェクトがあります。1つのプロジェクトには契約が含まれ、もう1つのプロジェクトには実装コードが含まれます。

これは、2つの構成ファイルがあることも意味します。これまでのところ、どちらがどのように改造する必要があるのか​​わかりません。

では、どちらを変更するのですか、それとも両方を変更する必要がありますか?実装プロジェクトはWCF構成のプロジェクトだと思います。

私は今、ビルドしたときにメタデータが公開されていないと表示されているにもかかわらず、エンドポイントとしてコントラクトを公開しようとしています(そして失敗しています)。

[/アップデート]

4

4 に答える 4

1

私はちょうどこれに出くわしました。私の場合、3 つのアセンブリがありました。1 つはサービス用、もう 1 つはクライアント用、もう 1 つは最初の 2 つで共有されるクラス ライブラリです。共有アセンブリ プロジェクトには、VS によって自動的に作成された app.config ファイルがありました。そのファイルを削除すると、問題が修正されました。

于 2016-09-01T17:37:40.677 に答える
1

編集

<serviceMetadata/>メタデータのサービス動作に要素を追加します

<configuration>
 <system.serviceModel>
  <services>
   <service name="WCFTest.Service1" behaviorConfiguration="Simplebehavior">
    <host>
     <baseAddresses>
      <add baseAddress="http://localhost:8000/WCFTest/"/>
     </baseAddresses>
    </host>
    <endpoint
     address=""
     binding="basicHttpBinding"
     contract="WCFTest.IService1"/>
    <endpoint
     address="mex"
     binding="mexHttpBinding"
     contract="IMetadataExchange" />
   </service>
  </services>
  <behaviors>
   <serviceBehaviors>
    <behavior name="Simplebehavior">
     <serviceMetadata/>
     <serviceDebug includeExceptionDetailInFaults="true"/>
    </behavior>
   </serviceBehaviors>
  </behaviors>
 </system.serviceModel>
</configuration>

エンドポイントの下に追加して、メタデータを交換します

<endpoint
          address="mex"
          binding="mexHttpBinding"
          contract="IMetadataExchange" />

詳細については、これを確認してください:ランダム エラー メッセージ: WCF サービス ホストがサービス メタデータを見つけられません

于 2012-11-29T12:53:07.080 に答える