我有一个带有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
,有两种方法:
GetNearbyJobsResponse IService.GetNearbyJobs(GetNearbyJobsRequest request)
{
...
}
和
GetChildJobsResponse IService.GetChildJobs(GetChildJobsRequest request)
{
...
}
我应该在哪个配置文件中添加 - 如果这确实是问题?
[UPDATE]
好的,只是为了重新迭代: 我在1个解决方案中有2个项目。 1个项目包含合同,另一个项目包含实施代码。
这也意味着有2个配置文件。到目前为止,我不知道哪一个需要以什么方式进行修改。
那么,哪一个要修改,还是我需要修改它们?我假设实现项目是WCF配置的项目。
我现在处于这样的情况:当我构建它时说我没有公开元数据,但它也尝试(并且失败)将合同公开为端点!
[/ UPDATE]
答案 0 :(得分:2)
我得到了同样的错误,因为我错误地评论了[ServiceContract] attibute。一旦我取消注释[ServiceContract]属性,它一切正常。
我希望这可以帮助那些面临同样问题的人。
答案 1 :(得分: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查看详细信息:Random Error Message: WCF Service Host cannot find any service metadata
答案 2 :(得分:1)
我遇到了这个错误,事实证明我的启动项目是错误的项目:这是我第一次看到这个错误,但是很好。
答案 3 :(得分:1)
我刚碰过这个。在我的例子中,我有三个程序集:一个用于服务,一个用于客户端,一个类库由前两个共享。共享程序集项目有一个由VS自动创建的app.config文件。删除该文件解决了问题。