6

URL 書き換えとア​​プリケーション リクエスト ルーティング (ARR) を使用して、同じサーバー上の異なるアプリ プール間で書き換える方法を見つけようとしています。

簡略化されたバージョンでは、これが私が持っているものです: REST サービス API は Service.A と B の 2 つの仮想ディレクトリで実装されているため、仮想ディレクトリは、リソース 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 を取得します

パスの /A に一致し、/Service.A/A に置き換える URL 書き換えルールを実装しました。これは、デフォルトの Web サイト レベルで web.config に次のようなコードを記述したもので、正常に動作します。

    <rewrite>

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

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

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

            </rule>

    </rewrite>

問題は、別のアプリケーション プールを (既定の Web サイトのアプリケーション プールから) 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 によってインストールされています。

4

0 に答える 0