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.Implementation再次带有 2 个方法:

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

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

我应该在哪个配置文件中放什么 - 如果这确实是问题?

[更新]

好的,所以只是重申一下:我在 1 个解决方案中有 2 个项目。1 个项目包含合同,另一个项目包含实现代码。

这也意味着有 2 个配置文件。到目前为止,我不知道哪一个需要以什么方式修改。

那么,哪个是要修改的,还是我需要同时修改两个?我假设实施项目是 WCF 配置的项目。

我现在的情况是,当我构建它时说我没有公开元数据,但它也尝试(并且失败)将合同公开为端点!

[/更新]

4

4 回答 4

2

我遇到了同样的错误,因为我错误地注释了 [ServiceContract] 属性。一旦我取消注释 [ServiceContract] 属性,一切正常。

我希望这可以帮助其他面临同样问题的人。

于 2016-01-08T19:44:28.027 回答
1

我遇到了这个错误,事实证明我把错误的项目作为启动项目:这是我第一次看到这个错误,但是哦,好吧。

于 2013-10-14T14:29:40.503 回答
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" />

Aslo 检查详细信息:随机错误消息:WCF 服务主机找不到任何服务元数据

于 2012-11-29T12:53:07.080 回答
1

我刚遇到这个。在我的例子中,我有三个程序集:一个用于服务,一个用于客户端,一个由前两个共享的类库。共享程序集项目有一个由 VS 自动创建的 app.config 文件。删除该文件解决了问题。

于 2016-09-01T17:37:40.677 回答