WCF服务的URL重写问题

时间:2015-02-12 17:09:17

标签: c# web-services wcf iis rewrite

我处于一个项目的尾端,该项目重写了我们在IIS中托管的现有公共端点(我们当前的实现是在IIS7之前编写的,并且是一个本土的托管应用程序)。

我也在努力让URL Rewrite功能正常工作,以便我们可以将现有客户无缝移动到新的端点。我在遗留应用程序旁边运行新端点时遇到了一些问题。

我认为这样可行:

旧版网址: 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重写?

1 个答案:

答案 0 :(得分:0)

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

  

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

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