【问题标题】:WCF web service removing svc extension adds .svc to all extensions删除 svc 扩展的 WCF Web 服务将 .svc 添加到所有扩展
【发布时间】:2011-09-23 11:16:43
【问题描述】:

我在 IIS 7 中应用了 URL 重写规则,如下所示:

模式:^([0-9a-zA-Z-]+)/([0-9a-zA-Z-./()]+)

RewriteUrl: {R:1}.svc/{R:2}

当我这样调用我的服务时,这非常有效:http://mysite/site/myservice/input/params

我面临的问题是我的项目中指向 HTML 文件的所有其他链接似乎都附加了 .svc,例如此代码不起作用:

当我尝试在网络浏览器中导航到 URL 时,我收到如下错误消息:

找不到资源: 请求的 URL:/site/stylesheet*.svc*/stylesheet.css

当 svc 存在时,IIS 似乎会正确删除它,但在它不存在的情况下会添加它。

有什么想法吗??

【问题讨论】:

    标签: asp.net wcf web-services svc


    【解决方案1】:

    考虑到重写规则的定义方式,您所描述的实际上是正确的行为。请记住,该规则基本上是说,对于与模式 ^([0-9a-zA-Z-]+)/([0-9a-zA-Z-./()]+) 匹配的任何传入 URL,将其重写,以便将 .svc 附加到第一组。

    显然,这不是你想要的。因此,您需要确保重写仅应用于某些 URL,即您的服务调用。

    我建议将您所有的 .svc 文件放在一个专用的子文件夹中,例如“服务”,并像这样更改规则:

    ^services/([0-9a-zA-Z-]+)/([0-9a-zA-Z-./()]+)
    

    这样,只有服务 URL 会被重写,而其他所有 URL 都不会被触及,因为它们不再与模式匹配。

    【讨论】:

    • 谢谢,辛苦了!.... 对于其他偶然发现这篇文章的人,我还将 RewriteUrl 修改为:services/{R:1}.svc/{R:2}跨度>
    猜你喜欢
    • 1970-01-01
    • 2010-09-26
    • 1970-01-01
    • 2012-08-20
    • 2012-09-25
    • 1970-01-01
    • 2013-07-25
    • 2013-05-31
    • 2011-04-03
    相关资源
    最近更新 更多