如何在不更改后绑定的情况下从WCF服务引用WCF客户端?

斯蒂芬

我有一个C#WCF服务,我需要引用另一个Web服务。旧服务是用Visual Basic编写的,不是WCF。

前者应该弃用后者,但是旧服务中有一些方法很复杂。因此,我想从新服务中调用旧服务中的方法。

为避免命名混乱,我想将旧服务的包装封装在一个单独的项目中,该项目从新服务中引用。但是,当我尝试从新服务项目调用包装器时,新服务引发了InvalidSoapOperation。当我从包装项目本身调用旧服务时,不会引发此异常。

通常,我会将旧服务的绑定从包装项目复制并粘贴到新项目,但是由于合同的相似性,我很犹豫。

有没有办法通过包装项目“间接”引用旧服务,以使新服务项目不直接与旧服务耦合?

编辑:堆栈跟踪如下:

System.InvalidOperationException was unhandled by user code
  HResult=-2146233079
  Message=Could not find default endpoint element that references contract 'OldService.OldServiceSoap' in the ServiceModel client configuration section. This might be because no configuration file was found for your application, or because no endpoint element matching this contract could be found in the client element.
  Source=System.ServiceModel
  StackTrace:
       at System.ServiceModel.Description.ConfigLoader.LoadChannelBehaviors(ServiceEndpoint serviceEndpoint, String configurationName)
       at System.ServiceModel.ChannelFactory.ApplyConfiguration(String configurationName, Configuration configuration)
       at System.ServiceModel.ChannelFactory.ApplyConfiguration(String configurationName)
       at System.ServiceModel.ChannelFactory.InitializeEndpoint(String configurationName, EndpointAddress address)
       at System.ServiceModel.ChannelFactory`1..ctor(String endpointConfigurationName, EndpointAddress remoteAddress)
       at System.ServiceModel.ConfigurationEndpointTrait`1.CreateSimplexFactory()
       at System.ServiceModel.ConfigurationEndpointTrait`1.CreateChannelFactory()
       at System.ServiceModel.ClientBase`1.CreateChannelFactoryRef(EndpointTrait`1 endpointTrait)
       at System.ServiceModel.ClientBase`1.InitializeChannelFactoryRef()
       at System.ServiceModel.ClientBase`1..ctor()
       at OldServiceWrapper.OldService.OldServiceClient..ctor() in C:...\MyProject\Service References\TheOldService\Reference.cs:line 21614

包装项目中的App.Config:

<system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="OldServiceSoap" />
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://localhost/OldService/OldService.asmx"
                binding="basicHttpBinding" bindingConfiguration="LogOrderSoap"
                contract="OldService.OldServiceSoap" name="OldServiceSoap"/>
        </client>
</system.serviceModel>
斯蒂芬

解决方案是将引用项目中的绑定和客户端信息复制并粘贴到包装器项目中。

C#DLL配置文件中所述

尽管很少需要在一个用户配置文件中分别跟踪应用程序不同副本的设置,但您不太希望让DLL的所有不同用法彼此共享配置。因此,当您使用“常规”方法检索配置对象时,返回的对象将与您在其中执行的App Domain的配置绑定,而不是与特定程序集绑定。

或者如Sam Holder从相同解决方案C#中的另一个项目中放入Reference Web.Config文件

类库没有自己的配置。他们使用正在使用的可执行文件的配置。

在C#中,标准做法是配置应属于应用程序,而不是引用的DLL。因此,将app.config信息复制并粘贴到调用项目是有意义的。这并不要求您直接从调用项目中引用旧的Web服务,因为我担心这样做。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C#如何在客户端管理WCF服务代理生命周期?

来自分类Dev

在没有客户端或代理的情况下调用WCF服务

来自分类Dev

如何在没有Play的情况下从Play框架使用REST客户端

来自分类Dev

Akka TcpPipeLine:如何在不首先接收init.Event的情况下将消息发送到客户端/服务器?

来自分类Dev

从服务访问WCF客户端凭据

来自分类Dev

如何使用客户端中的接口注入WCF服务?

来自分类Dev

如何在不中断客户端与服务器之间的https隧道的情况下配置apache反向代理?

来自分类Dev

如何使用ajax从客户端脚本调用WCF服务?

来自分类Dev

WCF客户端-无法确定WCF Web服务的正确绑定

来自分类Dev

如何在不使用刀的情况下通过脚本从客户端更改Chef中客户端的节点名称

来自分类Dev

如何在不使用VS的情况下从Dynamics AX中的c#项目刷新wcf服务引用

来自分类Dev

当服务器使用wcf停机时,如何在客户端存储消息?

来自分类Dev

如何在不安装Sensu服务器的情况下安装Sensu客户端?

来自分类Dev

如何在不破坏现有客户端的情况下扩展terraform模块输入变量模式?

来自分类Dev

异步客户端套接字c#。如何在不阻止程序运行的情况下循环等待来自服务器的信息?

来自分类Dev

Wcf数据服务客户端

来自分类Dev

WCF服务PHP客户端连接

来自分类Dev

如何使用客户端中的接口注入WCF服务?

来自分类Dev

如何在不中断客户端与服务器之间的https隧道的情况下配置apache反向代理?

来自分类Dev

如何在.Net中的WCF客户端Web服务调用中包括CDATA部分?

来自分类Dev

WCF Web服务客户端不侦听端点

来自分类Dev

如何在没有域名的情况下进行客户端-服务器通信

来自分类Dev

当服务器使用wcf停机时,如何在客户端存储消息?

来自分类Dev

为什么WCF服务无法在没有错误异常的情况下无法将确切的异常发送给客户端?

来自分类Dev

WCF绑定-服务和客户端不匹配

来自分类Dev

如何在不创建服务器的情况下测试客户端应用程序?

来自分类Dev

从 http 更改为 https“ContractFilter 在 EndpointDispatcher 不匹配”后从客户端调用方法时,WCF 服务返回错误

来自分类Dev

如何在WCF客户端中找到服务地址

来自分类Dev

WCF 在客户端调用服务

Related 相关文章

  1. 1

    C#如何在客户端管理WCF服务代理生命周期?

  2. 2

    在没有客户端或代理的情况下调用WCF服务

  3. 3

    如何在没有Play的情况下从Play框架使用REST客户端

  4. 4

    Akka TcpPipeLine:如何在不首先接收init.Event的情况下将消息发送到客户端/服务器?

  5. 5

    从服务访问WCF客户端凭据

  6. 6

    如何使用客户端中的接口注入WCF服务?

  7. 7

    如何在不中断客户端与服务器之间的https隧道的情况下配置apache反向代理?

  8. 8

    如何使用ajax从客户端脚本调用WCF服务?

  9. 9

    WCF客户端-无法确定WCF Web服务的正确绑定

  10. 10

    如何在不使用刀的情况下通过脚本从客户端更改Chef中客户端的节点名称

  11. 11

    如何在不使用VS的情况下从Dynamics AX中的c#项目刷新wcf服务引用

  12. 12

    当服务器使用wcf停机时,如何在客户端存储消息?

  13. 13

    如何在不安装Sensu服务器的情况下安装Sensu客户端?

  14. 14

    如何在不破坏现有客户端的情况下扩展terraform模块输入变量模式?

  15. 15

    异步客户端套接字c#。如何在不阻止程序运行的情况下循环等待来自服务器的信息?

  16. 16

    Wcf数据服务客户端

  17. 17

    WCF服务PHP客户端连接

  18. 18

    如何使用客户端中的接口注入WCF服务?

  19. 19

    如何在不中断客户端与服务器之间的https隧道的情况下配置apache反向代理?

  20. 20

    如何在.Net中的WCF客户端Web服务调用中包括CDATA部分?

  21. 21

    WCF Web服务客户端不侦听端点

  22. 22

    如何在没有域名的情况下进行客户端-服务器通信

  23. 23

    当服务器使用wcf停机时,如何在客户端存储消息?

  24. 24

    为什么WCF服务无法在没有错误异常的情况下无法将确切的异常发送给客户端?

  25. 25

    WCF绑定-服务和客户端不匹配

  26. 26

    如何在不创建服务器的情况下测试客户端应用程序?

  27. 27

    从 http 更改为 https“ContractFilter 在 EndpointDispatcher 不匹配”后从客户端调用方法时,WCF 服务返回错误

  28. 28

    如何在WCF客户端中找到服务地址

  29. 29

    WCF 在客户端调用服务

热门标签

归档