0

我有一个 REST 服务并试图删除 .svc - 一个常见的任务/问题。

服务器上的应用程序位于默认网站下的虚拟目录中(不确定这是否重要)

我已经安装了 IIS 重写模块并尝试为此创建重写规则。

http://blah.me.com/here/thingys/get?id=1111

重写为:

http://blah.me.com/service.svc/thingys/get?id=1111

在我的 web.conf 中创建了以下内容:

<rewrite>
        <rules>
            <rule name="GEAPI /here/ to /service.svc/">
                <match url="^(.*?)/here/(.*)$" />
                <action type="Rewrite" url="{R:1}/service.svc/{R:2}" />
            </rule>
        </rules>
    </rewrite>

在 GUI 中,正则表达式确实测试正确。

但是 - 当我在服务器上的浏览器中运行它时,它会给出以下 404 错误:

错误代码 0x80070002
请求的 URL http://blah.me.com:80/here/thingys/get?id=1111
物理路径 C: \MyApp\here\thingys\get


C:\Myapp 是 IIS 中的虚拟目录指向的正确物理目录。

我在这里缺少什么吗?我曾尝试在默认网站和应用程序下单独或一起创建此规则。

非常感谢

4

1 回答 1

0

你可以使用这个:

<rewrite>
    <rules>
        <rule name="GEAPI /here/ to /service.svc/">
            <match url="^(.*)here(/.+)" />
            <action type="Rewrite" url="{R:1}service.svc{R:2}" />
        </rule>
    </rules>
</rewrite>

IIS 只会为您提供位于http://blah.me.com/之后的 URI 部分

于 2010-02-12T12:49:11.170 回答