1

我需要将几个 ASP.net SOAP Web 服务移动到不同的服务器,但它们被广泛使用,我们不能中断客户端与其以前位置的连接。无法修改客户端。

我已经建立了到新服务位置的 HTTP 重定向 (302),但 SOAP 客户端获取的是重定向广告而不是服务响应。

我已经看到了一些处理这个问题的方法,但它们都涉及修改客户端代码,这不是一个选项。我剩下的唯一想法是创建一个透明的代理 SOAP 服务来返回所需的响应,但是我们并没有放松我们的耦合,而是实际上将它收紧了一个档次,这既愚蠢又难看。

有更好的答案吗?

4

1 回答 1

2

我认为使用 HttpServerUtility.Transfer 方法为您的旧服务创建一个使用旧 URL 的存根是最好的方法。这对任何客户端应该是 100% 透明的,这意味着它不会发送 HTTP 级别的重定向或任何让客户端正确接收和响应的内容。

在服务器端,您可以将旧的 Web 服务调用映射到新的调用,并且它应该对客户端完全透明。这仅在来自新服务的响应仍然足够接近以验证旧服务的 WSDL 时才有效。如果 web 服务方法和响应的签名发生了太大的变化,那么您将无法透明地执行此操作。

于 2012-10-15T17:14:12.620 回答