如何从一个客户端使用多个WCF服务

Mos*_*ess 5 .net c# wcf wcf-client

我还在学习整个WCF的事情,所以请在这里忍受我.

我所拥有的是使用C#和VS 2008创建的两个自托管服务:
服务#1添加两个数字并返回结果.
服务#2返回数字的平方.

我希望客户能够向服务1发送两个号码,得到总和,然后将总和发送到服务2并获得正方形.

我为这两个服务都有两个生成的代理,我可以对它们使用Intellisense,因此该部分可以正常工作.

现在我如何配置我的app.config文件,以便我可以与这两个服务进行通信?现在,每当我尝试这样做时,我都会得到一个例外.

[如果我一次只在app文件中有一个配置,客户端工作正常,并尝试只调用该服务器.]

我想这是一个非常无聊的问题,答案可能是"以_____方式构建配置文件",但Google似乎没有一个示例/指南.

有人知道怎么做吗?

注意:从一个客户客户端使用多个WCF服务虽然听起来像重复不是我想要的.

编辑:感谢marc_s,我得到了它的工作

由于两个服务都在不同的应用程序中运行,我不需要拆分服务器配置文件,但这是我对客户端配置文件所做的:首先使用SvrUtil.exe自动生成配置文件,然后以这种方式合并它们:

<bindings>
  <wsHttpBinding>

    <binding>
    ...
    </binding>

    <binding>
    ...
    </binding>

  </wsHttpBinding>
</bindings>
Run Code Online (Sandbox Code Playgroud)

...

  <endpoint>
Run Code Online (Sandbox Code Playgroud)

...

mar*_*c_s 3

如果您想在不同的端点/端口上运行这两个服务,请执行以下操作:

服务器端:

<service name="Service1">
    <endpoint address="http://localhost:8001/service1.asmx"
            binding="basicHttpBinding"
            contract="IService1" />
</service>
<service name="Service2">
    <endpoint address="http://localhost:8002/service2.asmx" 
            binding="basicHttpBinding"
            contract="IService2" />
</service>
Run Code Online (Sandbox Code Playgroud)

客户端:

<client>
    <endpoint address="http://localhost:8001/service1.asmx"
            binding="basicHttpBinding"
            contract="IService1"
            name="Service1" />
    <endpoint address="http://localhost:8002/service2.asmx" 
            binding="basicHttpBinding"
            contract="IService2"
            name="Service2" />
</client>
Run Code Online (Sandbox Code Playgroud)

这应该为您提供服务器上两个独立的端点以及一个可以与这两个端点通信的客户端。

马克