与多个终结点的 WCF 通信



>我有一个问题。我尝试构建具有多个入口点的 WCF 通信。但它永远不会起作用,它会显示如下错误消息:

  • 在服务"{1}"实现的协定列表中找不到协定名称"{0}"。

这是我的配置文件:

*

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
</appSettings>
<system.web>
<compilation debug="true" />
</system.web>
<system.serviceModel>
<services>
<service name="MwWcfLibrary.Service">
<endpoint address="net.tcp://localhost:8733" 
binding="netTcpBinding"
bindingConfiguration=""
bindingName="Action"
name="ActionInterface" 
contract="MwWcfLibrary.Actions.Interfaces.IAction">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex"
binding="mexTcpBinding"
bindingConfiguration=""
name="Mex"
contract="IMetadataExchange" >
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint binding="netTcpBinding"
address="net.tcp://localhost:8733"
bindingConfiguration=""
name="LifeSignInterface"
bindingName="LifeSign"
contract="MwWcfLibrary.LifeSign.Interfaces.ILifeSign" >
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint binding="netTcpBinding"
address="net.tcp://localhost:8733"
bindingConfiguration=""
name="DataInterface"
bindingName="Data"
contract="MwWcfLibrary.Notification.Interfaces.IData">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint binding="netTcpBinding"
address="net.tcp://localhost:8733"
bindingConfiguration=""
name="PublicDataInterface"
bindingName="PublicData"
contract="MwWcfLibrary.PublicData.Interfaces.IPublicData" >
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint binding="netTcpBinding"
address="net.tcp://localhost:8733"
bindingConfiguration=""
name="PublicStateInterface"
bindingName="PublicState"
contract="MwWcfLibrary.PublicState.Interfaces.IPublicState" >
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:8733//MwWcfLibrary" />
</baseAddresses>
<timeouts closeTimeout="00:00:30" />
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="false" httpsGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>

*

有人知道我是否配置错误吗?

亲切问候。

编辑

您要么尚未实现以下接口之一:MwWcfLibrary.Actions.Interfaces.IActionMwWcfLibrary.LifeSign.Interfaces.ILifeSignMwWcfLibrary.PublicData.Interfaces.IPublicDataMwWcfLibrary.PublicState.Interfaces.IPublicState

或者其中一个或多个未使用[ServiceContract]属性进行修饰

在你的问题中包含实际错误而不是"{0}",你会看到你的一些合约没有被类Service实现,它应该看起来像这样(至少(:

class Service : IAction, ILifeSign, IPublicData, IPublicState
{
// implementation
}

此外,您的地址属性似乎不正确,因为您已经定义了一个以段//Mww 结尾的基址...,但在您的端点中,地址比基址短。端点地址可以是相对的,如"Service".

以前

Service元素是指一个类,该类是ServiceContract接口的实现,这是进入endpoint协定属性的内容。验证这些属性中接口和类的完全限定名称。

从你的配置文件来看,你说类MwWcfLibrary.Service实现了称为MwWcfLibrary.Actions.Interfaces.IActionMwWcfLibrary.LifeSign.Interfaces.ILifeSignMwWcfLibrary.PublicData.Interfaces.IPublicDataMwWcfLibrary.PublicState.Interfaces.IPublicState的([ServiceContract]装饰的(接口

。这似乎是错误的。您的意思是有两个服务,每个服务都有一个单独的终结点?

最新更新