0

かなり優れた IIS7 書き換えモジュール (V2) を使用しており、物理ファイルが存在するかどうかに応じて異なる方法で書き換えるカスタム RewriteProvider を作成したいと考えています。

このチュートリアルのように、プロバイダーを正常に作成しました: http://learn.iis.net/page.aspx/804/developing-a-custom-rewrite-provider-for-url-rewrite-module/

ただし、実際にはURLを物理パスにマップできる必要があります-通常はHttpContext.Current.Server.MapPath()またはHostingEnvironment.MapPath()を介してこれを行いますが、HttpContextが初期化されていないようです(少なくとも現在のアプリ ドメイン内では - ReWrite モジュールはネイティブ コードであるため、この情報を入手できる場所を見つけるのに苦労しています)。

この問題を回避するために、独自の書き換えモジュールを作成する必要はありません。何か手がかりがある人はいますか?

ありがとう!マーク。

4

1 に答える 1

1

ASP.NET が使用している AppDomain とは異なる AppDomain でコードが実行されるため、これらの API を使用してアクセスすることはできません。

これを機能させるために考えられる唯一の方法は、物理パスを含む適切なサーバー変数を拡張機能に渡し、自分で Path.Combine() を実行することです。

したがって、YourProvider という拡張機能があり、次のように呼び出していると仮定します: {YourProvder:{URL}}

できること: {YourProvider:{APPL_PHYSICAL_PATH}|{URL}}

パイプ | で区切られた物理パスと URL を取得できるようになりました。、URL は外部ユーザーの制御下にあるため、最初に物理パスを渡すようにしてください。外部ユーザーにだまされて別の物理パスを取得することは望ましくありません。

于 2010-08-05T19:14:29.073 に答える