Question

J'utilise le plutôt excellente IIS7 le module Rewrite (V2), et que vous souhaitez créer un RewriteProvider personnalisé qui réécrit différemment depeneding si le fichier physique existe.

Je l'ai créé avec succès un fournisseur, comme dans ce tutoriel: http: / /learn.iis.net/page.aspx/804/developing-a-custom-rewrite-provider-for-url-rewrite-module/

Cependant, vraiment besoin d'être en mesure de faire correspondre l'url à un chemin physique - je normalement faire via HttpContext.Current.Server.MapPath () ou HostingEnvironment.MapPath (), mais il semble que le HttpContext n'a pas été initialisés (au moins dans le domaine actuel App - depuis le module de code natif est ReWrite, je vais avoir du mal à travailler où je peux obtenir ces informations).

Je ne veux pas vraiment avoir à recourir à la création de mon propre module de réécriture pour contourner ce problème - que quelqu'un a des indices pour moi

Merci! Mark.

Était-ce utile?

La solution

Vous ne pourrez y accéder en utilisant ces API puisque le code est exécuté dans un autre AppDomain que celui ASP.NET utilise.

La seule façon que je peux penser à faire ce travail est de passer la variable droite du serveur qui inclut le chemin d'accès physique à votre poste et faire un Path.Combine () vous-même.

supposant que vous avez une extension appelée YourProvider que vous appelez en quelque sorte comme ceci: {YourProvder: {URL}}

Vous pouvez le faire: {YourProvder: {APPL_PHYSICAL_PATH} | {URL}}

Vous pouvez maintenant obtenir le chemin d'accès physique et l'URL séparés par un tuyau | , Assurez-vous de passer le chemin physique d'abord depuis l'URL est dans le contrôle des utilisateurs externes que vous ne voulez pas vous tromper en obtenir un chemin d'accès physique différent.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top