【问题标题】:URL rewrite issue with WCF servicesWCF 服务的 URL 重写问题
【发布时间】: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


    【解决方案1】:

    通过进一步的研究,我确定这是不可能的:

    您只能在同一站点和同一应用程序中重写 URL 游泳池。

    http://blogs.msdn.com/b/asiatech/archive/2011/08/25/return-404-4-not-found-when-url-rewrite.aspx

    【讨论】:

      猜你喜欢
      • 2011-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多