2009-12-01 21 views
1

J'ai installé le module ServerSideIncludes sur mon ordinateur et il fonctionne très bien, à une exception près.Configuration de SSI dans IIS 7

<!--#include virtual="meta.inc" --> 

La ligne ci-dessus est à l'origine du problème. Je sais que je dois changer virtual avec file mais j'ai un site énorme et cela signifie que je dois changer au moins 1000 ligne de code comme ceci et je suis à la recherche d'un moyen d'exécuter correctement virtual dans IIS 7.

J'ai été à la recherche de cette solution, mais tout ce que j'ai pu trouver la solution que j'ai mentionnée ci-dessus.

Savez-vous comment résoudre ce problème sans changer le virtual à file

Merci.

Répondre

1

Avez-vous des chemins parents activés sur votre site? Accédez à la section "ASP" de votre site dans IIS et sélectionnez "Activer les chemins d'accès aux parents" dans la section "Comportement" et voir si cela aide. L'option Parent Paths vous permet d'utiliser ".." dans les appels à des fonctions telles que MapPath en autorisant les chemins relatifs au répertoire courant en utilisant la notation .. \. La définition de cette propriété sur True peut constituer un risque de sécurité, car un chemin d'inclusion peut accéder à des fichiers critiques ou confidentiels situés en dehors du répertoire racine de l'application.

+0

Je ne peux pas voir une telle chose dans mon IIS et je n'utilise pas classique Asp btw. – Tarik

+0

http://learn.iis.net/page.aspx/566/classic-asp-parent-paths-are-disabled-by-default/ référence environ 1/2 vers le bas sur la page – Jakkwylde

+0

Même si cela semble approprié pour cette question, ça ne marcherait pas :( – Tarik

0

SSI n'est pas ASP - ce sont des technologies différentes.

J'ai constaté que chaque fois que Microsoft publie une nouvelle version de leurs produits, certaines fonctionnalités qui fonctionnaient dans les versions précédentes fonctionnent parfois différemment ou pas du tout dans les versions les plus récentes, et il semble que ce problème puisse être un problème. ceux. Donc, vous voudrez peut-être envisager de passer à Apache HTTPd (si vous le pouvez) et ensuite vous n'aurez pas besoin de faire toutes ces modifications à vos fichiers - J'ai trouvé qu'Apache était cohérent dans leur support pour SSI (et d'autres technologies/modules, directives de configuration, etc.) dans toutes les versions de HTTPd qui le prennent en charge. Cette cohérence est l'une des raisons pour lesquelles je l'aime vraiment.

0

Ce n'est pas vraiment une réponse mais plutôt une confirmation de votre problème. Mais voir une façon possible que virtual pourrait fonctionner pour vous à la fin de ma réponse.

Depuis le blog MSDN IIS: Notes on Server-Side Includes (SSI) Syntax (KB 203064 Revisited)(du 2010-12-28, applique aux versions IIS 4.0 à 7.5):


Plus d'informations sur le fichier et virtuel Syntaxe

SSI les directives qui utilisent des chemins de fichier peuvent référencer des fichiers en utilisant un chemin ou virtuel.

  • L'élément de fichier est utilisé avec des fichiers qui sont relatifs au dossier du document en cours.L'exemple suivant comprend un fichier dans le dossier en cours:
<!--#include file="myfile.txt"--> 
  • L'élément virtuel représente les chemins qui sont par rapport au dossier de base du serveur Web. L'exemple suivant inclut un fichier dans le répertoire/scripts dossier virtuel:
<!--#include virtual="/scripts/myfile.txt"--> 

Conclusion: L'attribut file est utilisé pour désigner un emplacement de fichier qui est par rapport au document en cours. Donc, si c'est ce qui est nécessaire dans votre situation, vous aurez en effet besoin de changer l'attribut virtual à l'attribut file.

Il existe cependant une exception possible. L'article Server Side Includes sur Wikipédia montre l'exemple suivant:

<!--#include virtual="menu.cgi" --> 

Cela me porte à croire que un chemin de fichier virtual ne pas nécessairement besoin de commencer par un /. En l'absence d'un / leader, l'emplacement d'un fichier virtual est relatif au dossier de base du serveur Web.

Ainsi, il me semble que les attributs file et virtual pourraient se comporter de façon identique si les fichiers étant référencés se trouvent être situé dans le dossier de base (ou les sous-dossiers du dossier de base) du serveur web.