0

我收到以下错误

“ChannelFactory.Endpoint 上的 Address 属性为 null。ChannelFactory 的 Endpoint 必须指定一个有效的地址。”

而且我不确定我做错了什么。有人看到知道它的原因是什么吗?下面是我项目的 App.config 服务器和客户端 谢谢你的帮助,问候

 <system.serviceModel>
    <services>
      <service name="Server.DualService" behaviorConfiguration="NetTcpBehavior">
        <endpoint address=""
              binding="netTcpBinding"
              bindingConfiguration="DuplexBinding"
              contract="Server.IDualService" />

        <endpoint address="mex" binding="mexTcpBinding" contract="Server.IDualService" />
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://localhost:8731/Service/DualService/" />
          </baseAddresses>
        </host>
      </service>
      <service name="Server.PhoneService" behaviorConfiguration="Server.PhoneServiceBehavior">
        <endpoint address="" binding="wsHttpBinding" bindingConfiguration="" contract="Server.IPhoneService" />
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:4444/Service/PhoneService" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="Server.DualServiceBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
        <behavior name="Server.PhoneServiceBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
        <behavior  name="NetTcpBehavior">
          <serviceThrottling maxConcurrentSessions="10000" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
      <netTcpBinding>
        <binding name="DuplexBinding" sendTimeout="00:00:11">
          <reliableSession enabled="true" />
          <security mode="None" />
        </binding>
      </netTcpBinding>
    </bindings>
  </system.serviceModel>

客户端

<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="DefaultBinding_IPhoneService" closeTimeout="00:01:00"
                openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                useDefaultWebProxy="true">
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                    maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                <security mode="None">
                    <transport clientCredentialType="None" proxyCredentialType="None"
                        realm="">
                        <extendedProtectionPolicy policyEnforcement="Never" />
                    </transport>
                    <message clientCredentialType="UserName" algorithmSuite="Default" />
                </security>
            </binding>
            <binding name="DefaultBinding_IDualService" closeTimeout="00:01:00"
                openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                useDefaultWebProxy="true">
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                    maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                <security mode="None">
                    <transport clientCredentialType="None" proxyCredentialType="None"
                        realm="">
                        <extendedProtectionPolicy policyEnforcement="Never" />
                    </transport>
                    <message clientCredentialType="UserName" algorithmSuite="Default" />
                </security>
            </binding>
        </basicHttpBinding>
        <wsHttpBinding>
            <binding name="WSHttpBinding_IPhoneService" closeTimeout="00:01:00"
                openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
                maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
                allowCookies="false">
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                    maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                <reliableSession ordered="true" inactivityTimeout="00:10:00"
                    enabled="false" />
                <security mode="Message">
                    <transport clientCredentialType="Windows" proxyCredentialType="None"
                        realm="">
                        <extendedProtectionPolicy policyEnforcement="Never" />
                    </transport>
                    <message clientCredentialType="Windows" negotiateServiceCredential="true"
                        algorithmSuite="Default" establishSecurityContext="true" />
                </security>
            </binding>
        </wsHttpBinding>
    </bindings>
    <client>
        <endpoint binding="basicHttpBinding" bindingConfiguration="DefaultBinding_IPhoneService"
            contract="IPhoneService" name="DefaultBinding_IPhoneService_IPhoneService" />
        <endpoint binding="basicHttpBinding" bindingConfiguration="DefaultBinding_IDualService"
            contract="IDualService" name="DefaultBinding_IDualService_IDualService" />
        <endpoint address="http://localhost:4444/Service/PhoneService"
            binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IPhoneService"
            contract="ServiceReference2.IPhoneService" name="WSHttpBinding_IPhoneService">
            <identity>
                <userPrincipalName value="PANDZIA-PC\PANDZIA" />
            </identity>
        </endpoint>
    </client>
</system.serviceModel>
4

2 回答 2

1

你的配置有问题。服务器通过 net.tcp 指定 DualService,但客户端使用 BasicHttpBinding 且未指定地址。此外,您的客户端具有更多端点的配置,然后您的服务公开和 DualService 中的 mex 端点具有不正确的合同(应该是IMetadataExchange)。

只有 PhoneService 的客户端端点看起来正确。

于 2011-03-07T20:14:49.883 回答
1

一切正常,你是对的:),再次感谢你,在下面我给出了正确的配置,也许有一天它会对某人有所帮助,.. :D:D

在服务器端,我更正了端点中的 IMetadataExchange:

 <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" /> 

我改变了一点

<behavior  name="NetTcpBehavior">
      <serviceMetadata/>
      <serviceThrottling maxConcurrentSessions="10000" />
    </behavior>

在客户端,我删除了与 DualService 相关的大多数生成的代码并添加了

<endpoint name=""
              address="net.tcp://localhost:8731/Service/DualService/"
              binding="netTcpBinding"
              bindingConfiguration="DuplexBinding"
              contract="IDualService" />

绑定看起来像:

<netTcpBinding>
        <binding name="DuplexBinding" sendTimeout="00:00:05" >
          <reliableSession enabled="true" />
          <security mode="None" />
        </binding>
      </netTcpBinding>
于 2011-03-07T21:21:43.707 回答