3

これはおそらく答えられているように感じますが、適切な用語で検索していない可能性があります。

プロキシのように機能する WCF サービスがあります。普段ならお互いに会話できる2つのサービスの仲介役ですが、今回の新サービスを介していきます。

旧: A -> B

新規: A -> MM -> B

サービス エンドポイント ("A" が "MM" と通信するため) およびクライアント エンドポイント ("MM" が "B" と通信するため) として同じコントラクトを公開する必要があります。

これら 2 つはバインド構成を共有し、エンドポイントに異なる名前を付けることができますか? または、このシナリオを処理するためのより良い方法はありますか?

(<system.serviceModel>タグの内側)

<client>
    <endpoint address="http://<remoteaddress>/" binding="basicHttpBinding" 
    bindingConfiguration="MyBinding" contract="IService" name="ToB" />
</client>
<services>
    <service behaviorConfiguration="Behavior" name="Service">
        <endpoint address="" binding="basicHttpBinding"
        bindingConfiguration="MyBinding" name="FromA" contract="IService" />
        <host>
            <baseAddresses>
                <add baseAddress="http://localhost:8080/MyService" />
            </baseAddresses>
        </host>
    </service>
</services>
<bindings>
    <basicHttpBinding>
        <binding name="MyBinding" closeTimeout="00:15:00" openTimeout="00:15:00"
        receiveTimeout="00:15:00" sendTimeout="00:15:00" allowCookies="false" 
        bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
        maxBufferSize="2048000000" maxBufferPoolSize="2048000000" 
        maxReceivedMessageSize="2048000000" messageEncoding="Text" 
        textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
            <readerQuotas maxDepth="32" maxStringContentLength="8192" 
            maxArrayLength="4065536" maxBytesPerRead="4096" 
            maxNameTableCharCount="16384" />
            <security mode="None">
                <transport clientCredentialType="None" 
                proxyCredentialType="None" realm="" />
                <message clientCredentialType="UserName" 
                algorithmSuite="Default" />
            </security>
        </binding>
    </basicHttpBinding>
</bindings>

編集:

このセットアップのエラー メッセージは次のとおりです。

com.vsp.cal.webservice.external.SystemFault

スタック: サーバー スタック トレース:

   at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)

   at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)

   at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)

   at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
4

2 に答える 2

1

エンドポイントを一意に定義するには、名前を変更するだけでは不十分です。代わりに、アドレス、バインディング、コントラクトという古い「ABC」に戻ります。新しいエンドポイントを一意に定義するには、それらの少なくとも 1 つが異なる必要があります。 http://msdn.microsoft.com/en-us/library/ms733107(v=vs.100).aspx

これは役に立ちますか?

于 2013-10-16T21:30:38.717 に答える