首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WCF REST服务-将所有请求路由到一个操作

WCF REST服务-将所有请求路由到一个操作
EN

Stack Overflow用户
提问于 2011-12-13 12:10:15
回答 2查看 713关注 0票数 0

有没有办法注册一个路由来处理所有URL格式并将它们路由到特定的服务操作?

例如:

代码语言:javascript
复制
www.somedomain.com 
www.somedomain.com/anything
www.somedomain.com/anything/anything

等等..。

非常感谢

更新:,这太傻了。以下是如何做到这一点:

代码语言:javascript
复制
 [WebGet(UriTemplate = "*")]

然而,这给我带来了另一个问题。假设我使用了以下URL:

代码语言:javascript
复制
www.somedomain.com/Segment1/Segment2

它被映射到我的函数(用上面的属性标记)--但是传入的请求URL如下所示:

代码语言:javascript
复制
www.somedomain.com/Segment1

URL的其余部分无处可寻。

有人知道如何访问原始的URL吗?在模板匹配更改之前?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-14 12:40:54

在没有从syneptody的解决方案(上面)获得任何东西的情况下,这个解决方案看起来更强大、更健壮,我设法找到了我正在寻找的UriTemplate:

代码语言:javascript
复制
[WebGet(UriTemplate = "/*")]

这将匹配域后面的第一个'/‘,并在

代码语言:javascript
复制
 WebOperationContext.Current.IncomingRequest.UriTemplateMatch 

这正是我要找的。以防万一有人找过这个..。

票数 2
EN

Stack Overflow用户

发布于 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,您可以尝试如下所示。(您可能必须使用通配符)

代码语言:javascript
复制
<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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8489008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档