2

我有一个托管在 ASP.NET 4 环境(Windows 7 上的 IIS 7.5)中的 WCF Web 服务,我想使用 URL 重写/重定向。我需要这样做的原因是因为我无法更改某些移动设备代码来仅插入参数。

这是我想要的网址:

http://server.test.com/VirtualDirectory/theOrganization/RequestService.svc/REST/GetIssueTypes

真实网址是:

http://server.test.com/VirtualDirectory/RequestService.svc/REST/GetIssueTypes?organization=theOrganization

请注意我要如何删除 theOrganization 并将其附加到查询字符串以进行重定向。

<rule name="test" stopProcessing="true">
    <match url="(.+\.?)/(.+)/RequestService.svc/(.+)" />
    <action type="Redirect" url="{R:1}/RequestService.svc/{R:3}?organization={R:2}"
    redirectType="Permanent" />
</rule>

我知道写规则有点奇怪。认为我的正则表达式可以正确匹配。我在 IIS 管理器的 URL 重写测试器中运行表达式,它似乎与我想要的匹配。另外,我确实安装了 IIS URL Rewrite,并且我制定了一个简单的规则并且它有效。

但是,当我使用浏览器尝试它时,它无法重定向并导致 404。我希望 IIS 重写专家能够介入,因为我还很陌生。

谢谢!

4

1 回答 1

0

我在具有 iis 7.5 和 url rewrite 2.0 的测试服务器上测试了您的规则,并且该规则正在运行,但是您的正则表达式匹配您想要的 url 和真实的 url。

所以你最终得到一个双重重定向

我想你想要你的模式是这样的

(.+.?)/VirtualDirectory/(.+)/RequestService.svc/(.+)

希望这可以帮助。

于 2012-11-01T22:05:08.623 回答