3

net.tcp バインディングに WCF サービスがあります。これは、WAS を使用して IIS 7 でホストされています。Web サイトのバインディングは次のとおりです。 http mydns.mysocity.com 80 nt.tcp 8001 (DNS を指定するものは何もありません)

サービスの構成は次のようになります。

<system.serviceModel>
    <client />
    <bindings>
        <netTcpBinding>
            <binding name="netTCP" maxReceivedMessageSize="2147483647" receiveTimeout="06:00:00" >
                <security mode="Transport" >
                    <transport  clientCredentialType="Windows" />
                    <message clientCredentialType="Windows" />
                </security>
                <reliableSession enabled="true" inactivityTimeout="06:00:00" ordered="true" />
                <readerQuotas maxDepth="2000001" maxStringContentLength="2000001"
                                        maxArrayLength="2000001" maxBytesPerRead="2000001" maxNameTableCharCount="2000001" />
            </binding>
        </netTcpBinding>
        <wsDualHttpBinding>
            <binding name="dualHttp" 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">
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                            maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                <reliableSession ordered="true" inactivityTimeout="06:00:00" />
                <security mode="Message">
                    <message clientCredentialType="Windows" negotiateServiceCredential="true"
                                  algorithmSuite="Default" />
                </security>
            </binding>
        </wsDualHttpBinding>
    </bindings>
    <behaviors>
        <serviceBehaviors>
            <behavior name="serviceBehavior">
                <serviceDebug includeExceptionDetailInFaults="true"/>
                <serviceMetadata httpGetEnabled="true"/>
                <serviceThrottling maxConcurrentCalls="2000" maxConcurrentInstances="2000" maxConcurrentSessions="2000"/>
                <dataContractSerializer maxItemsInObjectGraph="96553600" ignoreExtensionDataObject="true" />
            </behavior>
        </serviceBehaviors>
    </behaviors>
    <services>
        <service name="MyService.Services.PublishSubscribeService" behaviorConfiguration="serviceBehavior">
            <!--Service de souscription/publication pour les clients qui veulent publier/souscrire et etre notify sur le meme canal. TCP,dualHttp et PoolingDuplex  ONLY-->
            <endpoint binding="netTcpBinding" bindingConfiguration="netTCP" address="/ITransientPublishSubscribeService/netPublicEndPoint" name="netPublicEndPoint" contract="MyService.Services.Interfaces.ITransientPublishSubscribeService">
                <identity>
                    <dns value="localhost" />
                </identity>
            </endpoint>
            <!--service de publication-->
            <endpoint binding="wsDualHttpBinding" bindingConfiguration="dualHttp" address="/IPublishService/wsDualPublicEndPoint" name="wsDualPublicEndPoint" contract="MyService.Services.Interfaces.IPublishService"/>
            <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="" name="mexEndPoint"  contract="IMetadataExchange" />
        </service>
            <endpoint binding="netTcpBinding" bindingConfiguration="netTCP" address="/ITransientGuarantedPublishSubscribeService/netPublicEndPoint" name="netPublicEndPoint" contract="MyService.Services.Interfaces.ITransientGuarantedPublishSubscribeService">
                <identity>
                    <dns value="localhost" />
                </identity>
            </endpoint>
            <endpoint binding="netTcpBinding" bindingConfiguration="netTCP" address="/ITransientGuarantedSubscribeService/netPublicEndPoint" name="netPublicEndPoint" contract="MyService.Services.Interfaces.ITransientGuarantedSubscribeService">
                <identity>
                    <dns value="localhost" />
                </identity>
            </endpoint>
            <endpoint binding="netTcpBinding" bindingConfiguration="netTCPNotReliable" address="/ITransientGuarantedPublishSubscribeService/netPublicEndPointNotReliable" name="netPublicEndPointNotReliable" contract="MyService.Services.Interfaces.ITransientGuarantedPublishSubscribeService">
                <identity>
                    <dns value="localhost" />
                </identity>
            </endpoint>
            <endpoint binding="netTcpBinding" bindingConfiguration="netTCPNotReliable" address="/ITransientGuarantedSubscribeService/netPublicEndPointNotReliable" name="netPublicEndPointNotReliable" contract="MyService.Services.Interfaces.ITransientGuarantedSubscribeService">
                <identity>
                    <dns value="localhost" />
                </identity>
            </endpoint>
            <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="" name="mexEndPoint"  contract="IMetadataExchange" />
        </service>
    </services>
</system.serviceModel>

また、WSDL には、ベース アドレスとして mydns.mysocity.com の代わりに MachineName.MySocity.com が含まれています。

    <wsdl:port name="netPublicEndPoint" binding="tns:netPublicEndPoint">
    <soap12:address location="net.tcp://MachineName.MySocity.com:8001/Services/PublishSubscribeService.svc/ITransientPublishSubscribeService/netPublicEndPoint"/>
    <wsa10:EndpointReference>
        <wsa10:Address>
            net.tcp://MachineName.MySocity.com:8001/Services/PublishSubscribeService.svc/ITransientPublishSubscribeService/netPublicEndPoint
        </wsa10:Address>
        <Identity xmlns="http://schemas.xmlsoap.org/ws/2006/02/addressingidentity">
            <Dns>localhost</Dns>
        </Identity>
    </wsa10:EndpointReference>
</wsdl:port>

アプリケーションは動作していますが、クライアントが MetaData をキャッシュしているため、ホスティング サーバーを変更するときはアプリケーションを閉じる必要があります。

WSDL のベース アドレスを mydns.mysocity.com に変更するにはどうすればよいですか?

構成にベースアドレスを追加することをテストしましたが、機能しません:

<host>
      <baseAddresses>
        <add baseAddress="net.tcp://mydns.mysocity.com:8001/Services/PublishSubscribeService.svc"/>
        <add baseAddress="http://mydns.mysocity.com/Services/PublishSubscribeService.svc"/>
      </baseAddresses>
    </host>
4

0 に答える 0