2009-12-08 19 views
0

J'ai une application écrite en .NET 3.5 avec C# comme langue. J'utilise Web Forms, mais en utilisant le routage d'URL avec les routes définies dans mon fichier global. Tout fonctionne comme prévu. Pour que les jolis chemins (voir: user/665 au lieu de user.aspx? Uid = 665) fonctionnent correctement, j'ai dû ajouter un mappage générique dans IIS5.1 (boîte locale, pas de test, de mise en scène ou de production). Fichier aspnet_isapi pour le framework 2.0. Tout fonctionne bien.Mappage générique pour ASP.NET et problèmes avec PHP

Maintenant, mon site a besoin d'un plugin pour PHP. Cependant, les fichiers PHP sont maintenant pris en charge par ASP.NET en raison du mappage de caractères génériques, et ne sont donc pas traités par l'interpréteur PHP. Y a-t-il un moyen de contourner cela? Devrais-je ajouter une sorte de gestionnaire à mon application web qui va prendre toutes les demandes PHP traitées par le framework ASP.NET et les acheminer vers le moteur PHP? Y a-t-il un moyen plus facile? Peut-être un moyen de les exclure dans le web.config (fichiers PHP) et de les faire servir par le bon moteur PHP?

Merci à tous! -Steve

Répondre

0

Le problème est que l'extension PHP doit être enregistrée.

  1. Dans Gestionnaire des services Internet clic-droit sur le site Web par défaut -> Propriétés -> Répertoire -> Configuration
  2. Sous Mappages d'application assurez-vous que .php est ajouté et il pointe vers PHP.EXE. Il devrait y avoir une entrée comme ceci: extension .php, chemin exécutable C: \ PHP \ PHP.EXE% s% s
+0

PHP est déjà ajouté. – StephenPAdams

0

D'après ce que je comprends, le problème est que ASP.NET essaye de router votre PHP demandes, donc ce que je ferais est d'ajouter un StopRoutingHandler() à vos routes dans le global.asax. Quelque chose comme cela devrait fonctionner:

routes.Add(new Route("{resource}.php/{*pathInfo}", new StopRoutingHandler())); 

Edit: Soyez conscient que les routes sont traitées en ordre, donc je l'ajouter au-dessus de vos voies.

+0

Génial. Laissez-moi essayer et je reviendrai à vous. – StephenPAdams

+0

Pas de départ. Je devine que ce qui se passe est que le fichier PHP n'est pas desservi par l'interpréteur PHP et est transmis à ASP.NET en raison du mappage de caractères génériques. Les fichiers global.asax mettent en place un StopRoute, et le fichier PHP tombe juste sur son visage. J'ai besoin que les fichiers PHP soient gérés par le moteur PHP. – StephenPAdams

1

C'est une solution, mais ne constitue pas une façon élégante (IMHO):

  1. Créer un répertoire virtuel
  2. fait pointer vers le dossier avec les fichiers (dans ce cas, un plug-in PHP)
  3. Modifiez les options de configuration pour le répertoire virtuel dans IIS et assurez-vous que le mappage générique pour ce répertoire est supprimé.

Cela fonctionne comme un charme pour ma situation. Cependant, est-il possible de ne pas avoir à traiter avec des répertoires virtuels?