我们目前正在构建一个基于ASP.NET Core的公司反向代理,目的是将非公共客户端服务公开给互联网。
它应该像这样工作:
Browser\App ==HTTPS==> ReverseProxy ==HTTP in VPN Tunnel==> WCF Service
我们当前的问题是客户端使用WsHttpBinding
在HTTP中公开WCF服务,而我们的反向代理仅接受HTTPS。这导致应用程序和服务的通信方式存在差异,因为WCF服务仅接受HTTP,但应用程序只能使用HTTPS。
此差异导致希望在反向代理后使用WCF服务的客户端应用程序失败并显示Provided URI scheme 'https' is invalid; expected 'http'. Parameter name: via
。在SO上找到的所有解决方案基本上只指向编辑<security mode="None">
到<security mode="Transport">
,但在app.config
上执行此操作会导致另一个例外:WsHttpBinding doesn't support reliable sessions over transport security (https)
。
有没有办法在不强制客户端在其Web服务中实现HTTPS的情况下,允许它工作?
据我所知,在负载均衡器后面使用WCF服务时这是一个常见问题(这基本上就是我的应用程序正在做的事情)。如果我在HTTP中使用我的反向代理,一切正常,但如果我启用HTTPS则不行。许多问题通过编辑服务定义得到解决,这是我不能做的事情,因为服务是第三方公司。