删除svc扩展的WCF Web服务将.svc添加到所有扩展

时间:2011-09-23 11:16:44

标签: asp.net wcf web-services svc

我在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,例如此代码不起作用:

  

< link rel =“stylesheet”type =“text / css”href =“StyleSheet / StyleSheet.css”/>

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

  

无法找到资源:   请求的网址:/site/stylesheet*.svc * / stylesheet.css

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

任何想法??

1 个答案:

答案 0 :(得分:0)

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

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

我建议将所有.svc个文件放在专用的子文件夹中,例如: “服务”,并改变规则如下:

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

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