【发布时间】:2015-04-13 13:09:49
【问题描述】:
我正处于一个项目的尾端,该项目将我们现有的公共端点重写为托管在 IIS 中(我们当前的实现是在 IIS7 之前编写的,并且是一个本土的托管应用程序)。
我也想尽办法让 URL 重写功能正常工作,以便我们可以无缝地将现有客户转移到新的端点。我在与旧版应用程序一起运行新端点时遇到了一些问题。
我认为这会很好:
旧版网址: https://mydevserver:443/2.0.22/ServiceA
新网址: https://mydevserver:9995/2.1.22/ServiceB.svc
web.config 中的规则:
<rule name="Test">
<match url="2.0.22/ServiceA" />
<action type="Rewrite" url="2.1.22/ServiceB.svc" />
</rule>
所以我关闭了旧服务,启动了我的客户端并将其指向旧服务 URL,但我收到一个错误,即没有端点侦听。这对我来说很有意义,因为该 URL 已由我们的旧版应用注册并且不可用:
没有端点监听 https://mydevserver:443/2.0.22/ServiceA 可以接受该消息。 这通常是由不正确的地址或 SOAP 操作引起的。看 InnerException(如果存在),了解更多详细信息。
所以我想如果我将 IIS 中的绑定端口更改为新端点的 https 默认值,它会起作用 -
新网址: [与旧版相同]/2.1.22/ServiceB.svc
这会提示 IIS 向我发出警告,指出绑定已被 IIS 以外的产品使用,我可能会覆盖地址/端口组合的现有证书。所以我说好的,并将证书重新绑定到 443 端口(为了更好的衡量标准),但是当我将我的客户端指向旧 URL 时,我得到了同样的错误,但它的措辞有点不同:
位于https://mydevserver:443/2.0.22/ServiceA 的 HTTP 服务是 不可用。这可能是因为服务太忙或因为 没有找到在指定地址监听的端点。请 确保地址正确并再次尝试访问服务 稍后。
我觉得我已经尝试了所有东西的每一种组合(通配符匹配、路径等),但我显然遗漏了一些东西。我将不胜感激有关此问题的任何帮助。
*另外,是否可以在不同的服务器上托管 IIS 端点并使用 URL 重写?
【问题讨论】:
标签: c# web-services wcf iis rewrite