通过WCF路由服务将调用路由到传统ASMX web服务

通过WCF路由服务将调用路由到传统ASMX web服务,wcf,asmx,wcf-routing,Wcf,Asmx,Wcf Routing,我正在开发一个遗留应用程序,其中包含对两个.asmx web服务的引用。我们希望重组服务层,使其更符合企业服务总线模式,客户机将其所有调用定向到一个服务,该服务处理请求到适当服务的路由 我一直在使用WCF路由服务,并且能够通过RoutingService成功地将呼叫路由到WCF服务,然后再路由到相应的服务 例如,客户端可以调用: http://routingservice/RoutingService.svc/WcfService 路由服务会将它转发到 http://wcfservice/Wc

我正在开发一个遗留应用程序,其中包含对两个.asmx web服务的引用。我们希望重组服务层,使其更符合企业服务总线模式,客户机将其所有调用定向到一个服务,该服务处理请求到适当服务的路由

我一直在使用WCF路由服务,并且能够通过RoutingService成功地将呼叫路由到WCF服务,然后再路由到相应的服务

例如,客户端可以调用:

http://routingservice/RoutingService.svc/WcfService
路由服务会将它转发到

http://wcfservice/WcfService
通过我在配置中指定的规则

我希望通过.asmx服务以某种方式实现相同的结果,我只需更新遗留应用程序中的web引用URL,以指向路由服务,然后路由服务将上的请求转发到客户端当前使用的URL

更改:

http://webservices/LegacyService.asmx


这是否可能以我所想的方式实现?

我从未尝试过,但理论上它应该可以毫无问题地工作。WCF与ASMX向后兼容-您可以使用WCF客户端与ASMX对话,如果需要访问ASP.NET管道,则可以使用WCF代替ASMX,并提供一些附加配置。只需尝试将路由端点与
basicHttpBinding
(用于向后兼容)一起使用即可。对于路由服务,请使用
IRequestReplyRouter
合同


可能有一个问题-如果您的ASMX服务使用ASP.NET会话,会话密钥将在cookie中传输-我不确定路由服务如何处理cookie

因此,它的工作方式与您期望的一样,尽管为.asmx服务公开元数据非常困难。我能够通过路由器成功地路由WCF服务的mex端点,然后svcutil可以同样轻松地使用路由端点,但是.asmx要求我的类已经使用真实的WSDL生成,并且我只需要在事后更改URL。当您尝试这样做时会发生什么?
http://routingservice/RoutingService.svc/LegacyWebService