有没有办法注册一个路由来处理所有URL格式并将它们路由到特定的服务操作?
例如:
www.somedomain.com
www.somedomain.com/anything
www.somedomain.com/anything/anything等等..。
非常感谢
更新:,这太傻了。以下是如何做到这一点:
[WebGet(UriTemplate = "*")]然而,这给我带来了另一个问题。假设我使用了以下URL:
www.somedomain.com/Segment1/Segment2它被映射到我的函数(用上面的属性标记)--但是传入的请求URL如下所示:
www.somedomain.com/Segment1URL的其余部分无处可寻。
有人知道如何访问原始的URL吗?在模板匹配更改之前?
谢谢。
发布于 2011-12-14 12:40:54
在没有从syneptody的解决方案(上面)获得任何东西的情况下,这个解决方案看起来更强大、更健壮,我设法找到了我正在寻找的UriTemplate:
[WebGet(UriTemplate = "/*")]这将匹配域后面的第一个'/‘,并在
WebOperationContext.Current.IncomingRequest.UriTemplateMatch 这正是我要找的。以防万一有人找过这个..。
发布于 2011-12-13 14:57:55
这听起来像是最好在政府层面上提供的服务。尝试注册默认路由可能很有诱惑力,但在本例中,我建议查看IIS重写模块:
http://learn.iis.net/page.aspx/460/using-the-url-rewrite-module/
此模块非常强大,可用于基于通配符或regex表达式重写URL。这将允许您定义一条规则,该规则可以重写到www.somedomain.com的任何URL到服务操作的规范地址。
例如,简单地将somedomain.com中的任何请求重写到somedomain.com/Segment1,您可以尝试如下所示。(您可能必须使用通配符)
<rule name="Canonical Host Name" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" negate="true" pattern="^somedomain\.com*" />
</conditions>
<action type="Redirect" url="http://www.somedomain.com/Segment1" redirectType="Permanent" />
</rule>请记住,这个工具非常强大,如果您阅读了文档,您将看到您可以容纳几乎任何模式的排列。
下面是另一篇文章,给出了一些例子:
http://blogs.iis.net/ruslany/archive/2009/04/08/10-url-rewriting-tips-and-tricks.aspx
https://stackoverflow.com/questions/8489008
复制相似问题