0

次のエラーが発生します

ChannelFactory.EndpointのAddressプロパティがnullでした。ChannelFactoryのエンドポイントに有効なアドレスが指定されている必要があります。」

何が間違っているのかわかりません。誰かがそれの理由が何であるかを知っていますか?以下は私のプロジェクトの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 に答える