C# 如何在C语言中重构web服务配置#

C# 如何在C语言中重构web服务配置#,c#,web-services,wsdl,C#,Web Services,Wsdl,我开发了一个导入许多.wsdl文件的应用程序,以便能够在web服务上调用多个方法。我使用visualstudio的addservice引用并按照说明访问这些服务。最后,我留下了下面的app.config文件,我想知道是否有办法重构应用程序,这样我就不必重复所有这些端点。请注意,除了contract属性的值之外,所有端点都是相同的 <client> <endpoint address="https://xxx.yyy.com:10803" behaviorConfigurat

我开发了一个导入许多.wsdl文件的应用程序,以便能够在web服务上调用多个方法。我使用visualstudio的addservice引用并按照说明访问这些服务。最后,我留下了下面的app.config文件,我想知道是否有办法重构应用程序,这样我就不必重复所有这些端点。请注意,除了contract属性的值之外,所有端点都是相同的

<client>
  <endpoint address="https://xxx.yyy.com:10803" behaviorConfiguration="clientEndpointCredential"
    binding="basicHttpBinding" bindingConfiguration="bsapi_binding"
    contract="CriteriaList.bsapi_port" name="bsapi_port" />
  <endpoint address="https://xxx.yyy.com:10803" behaviorConfiguration="clientEndpointCredential"
    binding="basicHttpBinding" bindingConfiguration="bsapi_binding"
    contract="ContainerList.bsapi_port" name="bsapi_port" />
  <endpoint address="https://xxx.yyy.com:10803" behaviorConfiguration="clientEndpointCredential"
    binding="basicHttpBinding" bindingConfiguration="bsapi_binding"
    contract="DisplayUnitList.bsapi_port" name="bsapi_port" />
  <endpoint address="https://xxx.yyy.com:10803" behaviorConfiguration="clientEndpointCredential"
    binding="basicHttpBinding" bindingConfiguration="bsapi_binding"
    contract="DomainList.bsapi_port" name="bsapi_port" />
  <endpoint address="https://xxx.yyy.com:10803" behaviorConfiguration="clientEndpointCredential"
    binding="basicHttpBinding" bindingConfiguration="bsapi_binding"
    contract="ResourceCriteriaAdd.bsapi_port" name="bsapi_port" />
  <endpoint address="https://xxx.yyy.com:10803" behaviorConfiguration="clientEndpointCredential"
    binding="basicHttpBinding" bindingConfiguration="bsapi_binding"
    contract="ResourceCriteriaUpdate.bsapi_port" name="bsapi_port" />
  <endpoint address="https://xxx.yyy.com:10803" behaviorConfiguration="clientEndpointCredential"
    binding="basicHttpBinding" bindingConfiguration="bsapi_binding"
    contract="ResourceCriteriaList.bsapi_port" name="bsapi_port" />
  <endpoint address="https://xxx.yyy.com:10803" behaviorConfiguration="clientEndpointCredential"
    binding="basicHttpBinding" bindingConfiguration="bsapi_binding"
    contract="ResourceCriteriaListByCriteriaId.bsapi_port" name="bsapi_port" />
</client>


@CodeCaster:该链接解释了如何替换配置条目并将其放入代码中。我在问是否有办法删除配置文件中当前存在的所有重复。但目标是继续使用配置文件。正如您已经发现的,配置的端点与地址/绑定/契约组合绑定,因此不能重复使用显示的行。相反,如果保留一个行为配置,则可以使用地址(例如从
AppSettings
键)、从配置读取的行为和从代码实例化的
basichttppbinding
在代码中实例化客户端。@CodeCaster:我必须导入八个.wsdl文件,这些文件生成了八个Reference.cs文件,还有八个代理类。因此,根据服务调用,我实例化了相应的代理类。不知何故,我的头脑告诉我有一种方法可以集中所有这些代理。这就是你在上次评论中解释的吗?如果是,你能告诉我一些解释这一点的文档吗?