2010-05-31 3 views
4

Nous exécutons un service de redirection de liens qui peut gérer les liens qui y sont lancés dans différents formats. L'un de ces formats est d'ajouter l'URL de destination à la fin du lien, par exempleGlobal.asax ne se déclenche pas pour les pages .aspx dans IIS7

http://url.fwd/abcd/http://www.mydomain.com/page.aspx

Cela fonctionnait sur un ordinateur Windows Server 2003/boîte de IIS6 pour les deux dernières années, mais maintenant nous sommes essayer de passer à une installation Windows Server 2008/IIS7 et ne fonctionne plus.

J'ai lu à propos du problème avec les deux-points dans l'URL, mais cela n'affecte pas les pages qui ne se terminent pas dans '.aspx'. Par exemple,

http://url.fwd/abcd/http://www.mydomain.com/page.php

redirigerez bien.

http://url.fwd/abcd/http//www.mydomain.com/page.aspx

fonctionne aussi très bien (note l'absence d'un deuxième deux-points). En dépit d'être la mauvaise URL, il est géré par notre système de redirection d'URL, qui utilise une page 404 personnalisée. Sur l'ancien système, nous avions un problème similaire, donc une méthode a été écrite dans Global.asax> Application_Error spécifiquement pour gérer le cas '.aspx', et cela a bien fonctionné.

Sur notre nouveau serveur, l'erreur Application_Error n'est jamais levée dans Global.asax. Au lieu de cela, j'obtiens une System.NotSupportedException - "Le format du chemin donné n'est pas supporté". Cette exception System.NotSupportedException est le cas exact que nous traitons dans la page Global.asax, donc ce n'est définitivement pas déclenché.

J'ai changé les clés de Registre indiquées dans plusieurs postes forum, HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ ASP.NET VerificationCompatibility = 1 HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ HTTP | Paramètres AllowRestrictedChars = 1

I J'ai essayé de changer les paramètres de Handler Mappings pour .aspx.

J'ai essayé de configurer le pool d'applications pour qu'il utilise le mode classique au lieu de l'intégrer, mais cela provoque une erreur complètement différente lorsque le contenu statique tel que les images et CSS ne s'affiche pas du tout. J'ai vérifié que le contenu statique est activé dans les fonctionnalités de Windows, et c'est le cas. En mode classique, la requête '.aspx' renvoie deux erreurs Bad Request sans aucune information. Le code de la page d'erreur que je reçois est littéralement

Bad Request <html> <corps> Bad Request </body > </html >

MISE À JOUR: J'ai changé le fichier statique mappage de gestionnaire à la forme trouvé dans cette page http://improve.dk/blog/2006/12/11/making-url-rewriting-on-iis7-work-like-iis6 Cependant, comme l'auteur le fait remarquer à juste titre, c'est un hack et pas la bonne façon de faire les choses sous IIS7. Il corrige également uniquement le problème de fichier statique en mode classique. Les pages '.aspx' lancent toujours une erreur en mode classique.

Toute idée ou contribution serait grandement appréciée à ce stade.

+0

FYI: Je n'ai jamais trouvé de solution pour cela. Nous devions revenir à l'utilisation d'une page ASP classique pour gérer tout le trafic entrant et supprimer les URLs suffixées se terminant par '.aspx', puis les transmettre à la pile ASP.NET. Je suis très mécontent de cette solution mais c'est la seule que nous avons pu trouver. Si quelqu'un a des idées sur la façon d'obtenir Global.asax tirant dans IIS7 pour ces demandes, j'aimerais les entendre. – roryok

+1

Juste comme une mise à jour, en '09 j'ai posté un suivi de mon hack original, détaillant comment faire fonctionner la bonne façon: http://improve.dk/archive/2009/10/14/how-to-do -url-réécriture-sur-iis-7-correctement.aspx :) –

Répondre

7

IIS 7 Solution

La solution facile dans IIS 7 est d'ajouter un paramètre dans votre fichier web.config pour dire IIS pour traiter toutes les demandes par le biais de vos événements Global.asax.Il suffit d'ajouter ou modifier cette section dans votre web.config pour activer les requêtes:

<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true" /> 
</system.webServer> 
+4

La propriété magic est .. Helephant

+1

Merci Helephant! C'était juste ce que je cherchais. – abjbhat

0

Dans mon cas, j'étais publier mon site dans la production et il me manque une copie au serveur de fichiers App_global.asax.compiled. Pour cette raison, n'a pas déclenché les événements à l'intérieur de Global.asax. J'espère avoir aidé ce conseil, j'ai perdu 8 heures à chercher.

Questions connexes