我试图弄清楚如何使用URL重写和应用程序请求路由(ARR)来重写同一服务器上的不同应用程序池 .

在简化版本中,这就是我所拥有的:REST服务API使用2个虚拟目录Service.A和B实现,因此虚拟目录是访问资源A和B的URL的一部分

获取[https://] api.mycompany.com/Service.A/A

获取[https://] api.mycompany.com/Service.B/B

我想要实现的是为没有虚拟目录名的api提供一个外部URL,显然不需要进行代码重构(合并解决方案文件和构建)

获取[https://] api.mycompany.com/A

获取[https://] api.mycompany.com/B

我实现了一个url重写规则来匹配路径中的/ A并用/Service.A/A替换,在默认网站级别的web.config中使用这样的代码,这很好 .

<rewrite>

            <rule name="AddServicePrefix" enabled="true">

                <match url="^A[/]?.*" />

                <action type="Rewrite" url="/Service.A/{R:0}" />

            </rule>

    </rewrite>

问题是,当我为Service.A(从默认网站的应用程序池)分配不同的应用程序池时,这将立即失败并出现403错误,但这是我们要求运行应用程序/虚拟目录的要求在不同的应用程序池下,以最小化任何池出现故障或回收时的影响 .

我做了一些研究 . 下面的上一篇文章基本上说“如果你想将请求重新路由到另一个应用程序池,你必须跳一跳,无论是跳过winsock还是命名管道还是其他什么”没有太多细节 . 我也通过ARR指南,但无法弄清楚如何在这种情况下使用ARR .

http://forums.iis.net/t/1151510.aspx?Rewrite+across+application+pools+

有帮助吗?建议和评论我是否朝着正确的方向前进?

谢谢!

哦,忘记提及环境:目前在开发环境中,Windows 7上的IIS 7.5,Url Rewrite 2.0和ARR 3.0,由Web Platform Installer安装 .