【问题标题】:WCF-Communication with multiple endpointsWCF 与多个端点的通信
【发布时间】:2017-08-22 09:04:27
【问题描述】:

我有问题。我尝试建立具有多个端点的 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>

*

有人知道我是否配置有问题吗?

亲切的问候。

【问题讨论】:

    标签: c# wcf config endpoints


    【解决方案1】:

    编辑

    您要么没有实现以下接口之一: 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] 装饰)接口

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

    【讨论】:

    • 你好,reckface。感谢您的快速回答。
    • 我的意图是只有一个带有 listet 接口的服务。
    • 您的意思是在一个类中实现所有这些接口,然后将其用作服务?
    • 谢谢。这正是我的代码中缺少的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多