2009-12-04 6 views
2

Je joue avec des gestionnaires http. Lorsque vous ajoutez un gestionnaire http à web.config, afin de le faire traiter des extensions spéciales sur IIS 7, vous devez l'enregistrer sous l'élément system.webServer/handlers. L'élément d'ajout, il a un attribut allowPathInfo et je ne peux pas comprendre ce qui est pour ...L'élément add des gestionnaires http possède un attribut allowPathInfo. Pourquoi est-ce?

MSDN dit:

Indique si le gestionnaire processus d'information complète de chemin dans un URI , par exemple comme contoso/marketing/imageGallery.aspx. Si la valeur est true, le gestionnaire traite le chemin d'accès complet, contoso/marketing/imageGallery. Si la valeur est false, le gestionnaire traite uniquement la dernière section du chemin, /imageGallery.

Cela n'aide pas tellement ... Quelqu'un?

Merci, Shay.

Répondre

6

allowPathInfo (AllowPathInfoForScriptMappings avant IIS7) est pour les manipulateurs tels que CGI ou WSGI qui utilisent la variable d'environnement PATH_INFO comme il est précisé dans la spécification de synthèse, seules les parties arrière de la trajectoire passée dans PATH_INFO. Par défaut, IIS définit incorrectement PATH_INFO sur le chemin complet, y compris la partie déjà stockée dans SCRIPT_NAME, ce qui va perturber tout ce qui repose sur l'interprétation standard de la variable. ASP, d'un autre côté, veut le «mauvais» réglage.

L'exemple cité ci-dessus semble un peu trompeur. Ce serait quand vous aviez un script /example/example.cgi/foo: SCRIPT_NAME serait toujours /example/example.cgi; PATH_INFO doit être /foo mais si allowPathInfo n'est pas défini, vous obtenez l'entier /example/example.cgi/foo. Par ailleurs, si vous activez allowPathInfo, IIS obtiendra droit PATH_INFO ... mais PATH_TRANSLATED est maintenant faux. Soupir.