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

标签 c# .net wcf wcf-client

我仍在学习整个 WCF,所以请多多包涵。

我有两个使用 C# 和 VS 2008 创建的自托管服务:
Service #1 将两个数字相加并返回结果。
服务 #2 返回数字的平方。

我希望客户端能够将两个数字发送到服务 1,获取总和,然后将总和发送到服务 2 并获取平方。

我为这两种服务生成了两个代理,我能够在它们上使用 Intellisense,所以这部分应该可以工作。

现在我该如何配置我的 app.config 文件,以便我可以与这两个服务进行通信?现在,每次我尝试这样做时都会出现异常。

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

我想这是一个非常菜鸟的问题,答案可能是“以 _____ 方式构建配置文件”,但 Google 似乎根本没有示例/指南。

有人知道怎么做吗?

备注:Consume multiple WCF services from one client 客户虽然听起来像是重复的,但这不是我要找的。

编辑:感谢 marc_s,我让它工作了

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

<bindings>
  <wsHttpBinding>

    <binding>
    ...
    </binding>

    <binding>
    ...
    </binding>

  </wsHttpBinding>
</bindings>

...

  <endpoint>

...

最佳答案

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

服务器端:

<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>

客户端:

<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>

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

马克

关于c# - 如何从一个客户端使用多个 WCF 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/686112/

相关文章:

c# - 更改 WPF 窗口的内容

c# - 项目过期后无法将项目添加到内存缓存

c# - 类型 xxx 不是预期的。使用 XmlInclude 或 SoapInclude 属性指定静态未知的类型

防火墙后面的 wsDualHttpBinding 和 netTcpBinding 的 WCF 问题

c# - 在 ActionBlock 中等待异步 lambda

c# - 将文件上传到 Amazon S3 中的存储桶失败并显示 "Maximum number of retry attempts reached"

c# - 无法构建应用程序安装程序

WCF 最大实例数似乎限制为 10

c# - 使用 GET 请求跨 2 个 API 下载 PDF

c# - 为什么加载System.Data 4.0.99.99会成功?