目标程序集不包含任何服务类型.您可能需要调整此程序集的代码访问安全策略



我有一个带有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)
{
...
}

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

[更新]

好的,所以只需要重新迭代:我在一个解决方案中有两个项目。一个项目包含合同,另一个项目有实现代码。

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

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

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

[/UPDATE]

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

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

编辑

<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服务主机找不到任何服务元数据

我有这个错误,结果发现我的启动项目是错误的:这是我第一次看到这个错误,但哦,好吧。

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

最新更新