2016-08-18 8 views
0

フォルダ内のすべてのファイルに対して小さなURLを作成したいとします。だからではなく、執筆:私はリダイレクトするように見えるんファイルのすべての要求を、PDFを処理するための単純なフォルダ名にルーティングします。

routes.MapPageRoute("Sample", "Sample/{*fullpath}", "~/Content/pdf/samples/{*fullpath}", False) 

を追加したが、私はのために登録されたビルドプロバイダがありません取得

http://MyWebsite.com/samples/myfile.pdf 

を:

http://mywebsite.com/content/pdf/samples/Myfile.pdf 

私は書くことができます拡張子 '.pdf'。ただし、ASPXファイルをフォルダに入れてそのフォルダに移動すると正常に動作します。それでは、私は次のように追加します:

<add extension=".pdf" type="System.Web.Compilation.PageBuildProvider" /> 

これで、ページがぎこちないものになってしまったため、パーサーエラーが発生するようになりました。 画像にも同じことが起こります。

私は何ができないのですか?ルーティングなしでページを表示またはダウンロードする方法を理解する方法があるはずです。

良い方法がありますか?

答えて

0

私はどれが効率的か素晴らしいか分かりませんが、うまくいくものを見つけました。私は

routes.MapPageRoute("Sample", "Sample/{*fullpath}", "~/Content/pdf/samples/{*fullpath}", False) 

を保持 は、その後、私はのWeb.Configに次を追加しました。

<system.webServer> 

    <rewrite> 
     <rules>   
     <rule name="Redirect PDFs" stopProcessing="true"> 
      <match url="^sample/?(.*)$" /> 
      <action type="Redirect" url="/Content/SampleReports/{R:1}" redirectType="Permanent" /> 
     </rule> 
     </rules> 
    </rewrite> 

</system.webServer> 

これを行うには、より良い、より速く、簡単な方法があるかどうかを知りたいと思っています。また、これはPDFファイルでも機能します。私はサンプルディレクトリから提供したいスタティックファイルの種類ごとにルールを作成する必要があると仮定します。

関連する問題