我在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存在时正确删除它,但在不存在的情况下添加它。
任何想法??
答案 0 :(得分:0)
对于如何定义重写规则,您所描述的实际上是正确的行为。请记住,该规则基本上表示,对于匹配模式^([0-9a-zA-Z-]+)/([0-9a-zA-Z-./()]+)
的任何传入的URL,请重写它,以便将.svc
附加到第一组。
显然,这不是你想要的。因此,您需要确保重写仅适用于某些URL,即您的服务调用。
我建议将所有.svc
个文件放在专用的子文件夹中,例如: “服务”,并改变规则如下:
^services/([0-9a-zA-Z-]+)/([0-9a-zA-Z-./()]+)
这样,只会重写服务网址,而不会触及所有其他网址,因为它们不再与模式匹配。