在 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 中使用通配符的主要内容,如果未能解决你的问题,请参考以下文章

在codeigniter路由中使用通配符?

在通配符 where 子句中使用 Select 语句

SQL的通配符

在 find 和 ls 中使用通配符 [重复]

通配符

使用通配符增强泛型