0

リクエストのたびに

http://localhost:9000/Content/PDF/ABC.pdf 

(IISで)来たら、URL書き換えモジュールでそのリクエストを処理してリダイレクトしたい

http://localhost:9000/User/GetPdf

これにより、コントローラーとアクション メソッドが呼び出され、pdf ファイルがエンド ユーザーに表示される前にコードが実行されます。

ここで User は UserController で、GetPdf はアプリケーションの ActionMethod です。

この URL 書き換えを作成する手順を教えてください。

前もって感謝します。

4

1 に答える 1

3

IIS 7.x を使用していて、URL Rewrite 2.0 モジュールがインストールされていると仮定しています。

アプリケーションのweb.config<rewrite>ファイルに、次のような要素を追加します。

<system.webServer>
   <rewrite>
      <rules>
        <rule name="PDF Rewrite">
          <match url="Content/PDF/([\w-]+)\.pdf" />
          <action type="Rewrite" url="User/GetPdf/{R:1}" logRewrittenUrl="true" />
        </rule>
      </rules>
    </rewrite>
</system.webServer>

([\w-]+)部分は、ファイル拡張子なしで PDF の名前 (この例では「 ABCurl="Content/PDF/([\w-]+)**\.pdf" 」)を「キャプチャ」します。の部分は、キャプチャされた文字列を挿入します。最終的な結果は次のとおりです。{R:1}<action type="Rewrite" url="User/GetPdf/{R:1}" logRewrittenUrl="true" />

http://localhost:9000/Content/PDF/ABC.pdf 

になります:

http://localhost:9000/User/GetPDF/ABC 

PDF の名前を Action メソッドに渡す必要があると想定しているため、標準のルーティング パターンを実装すると{Controller}/{Action}/{id}、は「 ABCid 」に設定されます。

私が見つけた URL Rewrite モジュールの最良の紹介は、実際にはURL Rewrite 1.1 configuration referenceです。2.0 ではなく v.1.1 用ですが、v.2.0 Configuration Referenceよりも優れた概要を提供します。最初から読む価値あり。特に、「書き換えルールからの URL 部分へのアクセス」セクションを理解する必要があります。

URL 書き換えモジュールをデバッグするには、IIS 7.x の "Failed Request Tracing" を使用できます。これは、その名前に反して、成功した要求と失敗した要求を追跡するために使用できます。このwww.iis.net エントリは、これを構成する方法と、利用可能な詳細なデバッグ情報の量を示しています。

また、この属性は、元の URLではなくlogRewrittenUrl="true"、書き換えられた URL が標準の IIS ログに記録されることを意味することに注意してください。(元の URL と書き換えられた URL の両方をログに記録するために使用することはできません --- どちらか一方しか取得できません。)

于 2013-01-09T21:29:38.100 に答える