Frage

Ich bin mit der eher ausgezeichneten IIS7 Rewrite Modul (V2), und will einen benutzerdefinierten RewriteProvider schaffen, die anders eine Neufassung depeneding auf, ob die physische Datei vorhanden ist.

Ich habe erfolgreich einen Anbieter, wie in diesem Tutorial erstellt: http: / /learn.iis.net/page.aspx/804/developing-a-custom-rewrite-provider-for-url-rewrite-module/

Allerdings müssen wirklich in der Lage sein die URL einen physischen Pfad zur Karte - ich würde normalerweise dies über HttpContext.Current.Server.MapPath () oder HostingEnvironment.MapPath (), aber es sieht aus wie die Httpcontext nicht gewesen initialisierte (zumindest innerhalb der App Domain Strom - da das Rewrite-Modul nativen Code ist, habe ich Schwierigkeiten, herauszufinden, wo ich diese Informationen bekommen).

Ich will nicht wirklich mein eigenes Rewrite-Modul zurückgreifen müssen, um zu schaffen, dieses Problem zu umgehen - jemand irgendwelche Anhaltspunkte für mich

?

Danke! Mark.

War es hilfreich?

Lösung

Sie werden nicht in der Lage sein, um es zu bekommen Verwendung dieser APIs, da der Code ausgeführt wird in einer anderen AppDomain als die ASP.NET verwendet wird.

Die einzige Möglichkeit, die ich denken kann, diese Arbeit zu machen, ist den richtigen Server Variable zu übergeben, die den physischen Pfad zu Ihrer Erweiterung umfasst und macht einen Path.Combine () selbst.

So vorausgesetzt, Sie haben eine Erweiterung namens YourProvider, dass Sie irgendwie wie folgt anrufen: {YourProvder: {URL}}

können Sie tun: {YourProvder: {APPL_PHYSICAL_PATH} | {URL}}

Sie können nun den physischen Pfad bekommen und die URL durch ein Rohr getrennt | , Stellen Sie sicher zuerst den physischen Pfad passieren, da die URL in der Steuerung externer Benutzer ist, dass Sie nicht wollen, sie Sie in immer einen anderen physischen Pfad zu betrügen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top