在 ServiceRoute 中使用通配符
Posted
技术标签:
【中文标题】在 ServiceRoute 中使用通配符【英文标题】:using wildcards in ServiceRoute 【发布时间】:2011-08-01 13:21:56 【问题描述】:我有一个 WCF 应用程序,它曾经有多个服务,但现在我们已将它们重构为一个服务,但客户仍会在其旧 URL 上调用它们。
为了适应这一点,我使用 RouteTable 将它们路由到像这样的单个实现
RouteTable.Routes.Add(new ServiceRoute("Services/MyoldService.svc",
new MyServiceFactory("MyoldService"), typeof(Service1)));
是否可以通过在 ServiceRoute 的 url 模式中使用某种通配符来指定所有服务都转到单个实现?
类似
RouteTable.Routes.Add(new ServiceRoute("Services/*.svc",
new MyServiceFactory("MyoldService"), typeof(Service1)));
或任何其他实现相同目标的方式。
【问题讨论】:
你在找Filter Tables
吗?
见codeproject.com/Articles/772854/…
您是想避免IgnoreRoute
某事还是要重定向您的新服务
【参考方案1】:
尝试使用 dontcare 而不是 * 由于 ServiceRoute 继承自 Route 这似乎应该基于 MSDN 文档工作
【讨论】:
这似乎对我不起作用,似乎不喜欢大括号。 从reference code 看来,如果找到大括号,它会抛出异常。如果我理解正确,有人可以澄清一下吗?【参考方案2】:我的建议是通过 IIS url 重写来做到这一点,这确实允许通配符:
http://www.iis.net/learn/extensions/url-rewrite-module/using-the-url-rewrite-module
【讨论】:
以上是关于在 ServiceRoute 中使用通配符的主要内容,如果未能解决你的问题,请参考以下文章