2016-08-18 4 views
0

Ich möchte eine kleine URL für alle Dateien in einem Ordner erstellen. Also anstatt zu schreiben:Verlegen Sie alle Anforderungen für Dateien an einen einfachen Ordnernamen für das Versenden von PDFs.

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

ich schreiben kann:

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

ich hinzugefügt haben

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

, die umgeleitet werden scheint, aber ich bekomme Es gibt keine Build-Provider registriert für die Erweiterung '.pdf'. Es funktioniert jedoch einwandfrei, wenn ich eine ASPX-Datei in den Ordner lege und dorthin navigiere. Also dann, ich hinzufügen:

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

Was jetzt gibt mir einen Parser-Fehler, da die Seite mit Kauderwelsch gefüllt ist. Das gleiche passiert für Bilder.

Ist das, was ich verlange, nicht machbar? Es scheint, dass es einen Weg geben sollte, dass es versteht, die Seite so zu bedienen oder herunterzuladen, wie es ohne das Routing der Fall wäre.

Gibt es einen besseren Weg?

Antwort

0

Nun, ich habe etwas gefunden, das funktioniert, obwohl ich nicht weiß, wie effizient oder großartig es ist. Ich hielt

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

Dann habe ich die folgenden auf die 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> 

Ich würde noch gerne wissen, ob es ein besserer, schneller oder einfacher Weg, dies zu tun. Dies funktioniert auch für PDF-Dateien. Ich nehme an, dass ich für jeden Typ der statischen Datei, die ich aus dem Beispielverzeichnis bereitstellen möchte, eine Regel erstellen muss.

Verwandte Themen