C# 通过另一个WCF呼叫呼叫WCF

C# 通过另一个WCF呼叫呼叫WCF,c#,wcf,C#,Wcf,我有一种情况,我想打一个WCF电话,因为另一个电话正在打进来 Site1请求-->Site2 站点2请求-->站点3 站点2是否已测试站点2是否能够在不涉及站点1的情况下与站点3通信?只是为了确保您正确设置了Site 3服务。是的,每个站点都使用相同的代码库和网站应用程序。unit1到5的绑定到同一个IIS web应用。你能发布站点2和站点3配置文件吗?它们与我上面发布的完全相同。这是因为这些网站使用相同的代码库和网站。克隆人互相呼叫。我动态更改端点url。其他wcf调用可以正常工作,只是调用中

我有一种情况,我想打一个WCF电话,因为另一个电话正在打进来

Site1请求-->Site2
站点2请求-->站点3

站点2是否已测试站点2是否能够在不涉及站点1的情况下与站点3通信?只是为了确保您正确设置了Site 3服务。是的,每个站点都使用相同的代码库和网站应用程序。unit1到5的绑定到同一个IIS web应用。你能发布站点2和站点3配置文件吗?它们与我上面发布的完全相同。这是因为这些网站使用相同的代码库和网站。克隆人互相呼叫。我动态更改端点url。其他wcf调用可以正常工作,只是调用中的调用不能正常工作。首先,错误消息说它找不到aaaaaa.API.Services.Contract.IEchoService,.config文件中有aaaaa.API.Services.Contract.IEchoService。这两个需要匹配,匹配区分大小写。另一件事是,在代理中,您将请求作为参数传递给构造函数newEchoServiceClient(请求)。默认服务引用不将请求作为构造函数的参数。
<service name="FakeCompany.API.Services.Service.EchoService" behaviorConfiguration="MyServiceTypeBehaviors">
    <endpoint address="" binding="basicHttpBinding" contract="FakeCompany.API.Services.Contract.IEchoService" bindingConfiguration="SecureBinding" />
</service>
[Test]
public void CascadeMessage()
{
    //-- TEST: That a wcf call can occur within another wcf call.

    //-- ARRANGE
    DTO_Echo_Cascade_Request request = new DTO_Echo_Cascade_Request(unit1, unit2);
    request.NextCall = string.Format("{0};{1};{2};", unit3, unit4, unit5);


    //-- ACT
    var response = EchoAgent.Cascade(request);

    //-- ASSERT
    Assert.AreEqual("TBA", response.Response);
}
internal static DTO_Echo_Response Cascade(DTO_Echo_Cascade_Request request)
{
    DTO_Echo_Response response;
    using (EchoServiceClient serviceClient = new EchoServiceClient(request))
    {
        response = serviceClient.Cascade(request);
    }

    return response;
}
public DTO_Echo_Response Cascade(DTO_Echo_Cascade_Request request)
{
    return Process(() => Proxy.Cascade(request));
}
public DTO_Echo_Response Cascade(DTO_Echo_Cascade_Request request)
{
    DTO_Echo_Response response = new DTO_Echo_Response();

    response.Response += string.Format("Hello from {0};", request.TargetAddress);

    if (request.NextCall.NotNullOrEmpty())
    {
        var split = request.NextCall.Split(new [] {';'}, StringSplitOptions.RemoveEmptyEntries);

        if (split.GetUpperBound(0) > 0)
        {
            DTO_Echo_Cascade_Request nextRequest = new DTO_Echo_Cascade_Request(request.TargetAddress, split[0]);
            for (int i = 1; i < split.GetUpperBound(0); i++)
            {
                nextRequest.NextCall += split[i] + ";";
            }
            response.Response += EchoAgent.Cascade(nextRequest).Response;
        }

    }

    return response;
}
response.Response += EchoAgent.Cascade(nextRequest).Response;