3

我觉得这可能已经得到了回答,也许我没有用正确的术语进行搜索。

我有一个像代理一样的 WCF 服务。它是两个服务的中间人,通常可以相互通信,但现在通过这个新服务。

旧:A -> B

新:A -> MM -> B

我需要公开与服务端点(“A”与“MM”对话)和客户端端点(“MM”与“B”对话)相同的合同。

这两个可以共享一个绑定配置,只是给端点不同的名称?还是有更好的方法来处理这种情况?

<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”——地址、绑定、合同。至少其中一个必须不同才能唯一地定义一个新端点。 http://msdn.microsoft.com/en-us/library/ms733107(v=vs.100).aspx

这有帮助吗?

于 2013-10-16T21:30:38.717 回答
1

感谢所有查看并尝试提供帮助的人!

最后不是配置,而是一个愚蠢的编码错误。神秘的错误消息是来自另一方(Java Web 服务)的响应。这并不高兴,因为我发送了一个空对象,因为演员阵容失败。

所以答案是,当您不像白痴那样编码时,这种配置确实有效。

于 2013-10-18T00:53:21.813 回答