asp classic - ¿Por qué no#include está trabajando en la página.asp en IIS7.5?
asp-classic iis-7.5 (3)
¿Qué tal un #include virtual
? si dice:
#include virtual="/mysite/include/file.inc
debería encontrar el file.inc
en la carpeta de inclusión en mysite? He habilitado y deshabilitado las rutas principales y he probado alrededor de un millón de cosas. Todavía recibo un asp 0126 error
para el archivo no encontrado. Puedo cambiarlo para que incluya un archivo y luego lo encuentre, pero luego el archivo.inc tiene muchos otros incluidos y no puede encontrarlos, sin importar cómo lo cambio para incluir archivos o virtuales. Funciona en IIS 6, pero no en IIS 7 a lo que estoy mudando este sitio. Es una página asp clásica con casi todo lo que se hace en archivos de inclusión
Tengo mysite en la ubicación Default Web site/dept_Sites/mysite
.
Vi una pregunta similar a esto, pero la mía es ligeramente diferente:
Recibo resultados intermitentes con los archivos #include que funcionan en un servidor IIS 7.5 (R2008 V2). Mis inclusiones solo funcionan si están en la misma carpeta que la página .asp actual o en una subcarpeta de la página actual. Esto es inconveniente, ya que me gustaría mantenerlos todos en una subcarpeta / lib, fuera de la página principal.
Mi configuración: tengo una carpeta llamada DCN, que se encuentra justo debajo de la carpeta wwwroot. Hay varios archivos en una carpeta / lib dentro de la carpeta DCN, por lo que la ruta absoluta es c: / inetpub / wwwroot / dcn / lib / my_include_file.asp. Si abro una página ASP en la carpeta DCN, puedo extraer archivos de inclusión de la subcarpeta / lib. Sin embargo, si abro una página ASP de la carpeta DCN / trouble (como "DCN / Trouble / Search.asp"), y la página search.asp tiene una línea que dice:
<!--#include file="../lib/my_include_file.asp"-->
la inclusión falla, y obtengo un error de 500.
También lo intenté:
<!--#include file="/lib/my_include_file.asp"-->
con los mismos resultados. Lo mismo con:
<!--#include file="/DCN/lib/my_include_file.asp"-->
Cambié las barras diagonales a barras invertidas, con los mismos resultados. Incluso llegué a intentar:
<!--#include file="c:/inetpub/wwwroot/dcn/lib/my_include_file.asp"-->
(por pura desesperación), pero aún obtengo los mismos resultados.
Si creo una subcarpeta en la carpeta dcn / trouble, puedo incluir archivos de ella, pero obviamente esto no es ideal.
Cualquier sugerencia sería muy apreciada. No puedo evitar pensar que esto es algo trivial. ¡Gracias por adelantado!
Creo que su problema es que las rutas principales están deshabilitadas por defecto en IIS.
Tienes dos opciones:
- Usar rutas virtuales
- Habilitación de rutas primarias ASP en IIS
Para detalles, lea este artículo del sitio web de IIS
http://learn.iis.net/page.aspx/566/classic-asp-parent-paths-are-disabled-by-default/
Yots es correcto, parece que las rutas de los padres están desactivadas. Si no puede activar estos, use las rutas virtuales en su lugar:
En función de su pregunta, donde indique que los archivos de inclusión están en /DCN/lib
, haga lo siguiente:
<!-- #include virtual="/DCN/lib/my_include_file.asp -->
Al usar rutas virtuales, debe especificar la ruta virtual completa al archivo, es decir, desde la raíz del sitio. Esto no es ideal si está creando su aplicación en una subcarpeta en su máquina de desarrollo donde está utilizando XP y luego desplegándola en la raíz de una máquina de producción. Dicho esto, IIS7 en Vista o Windows 7 permite la creación de múltiples sitios ahora **.
Al usar un tipo de ruta de File="..."
, el nombre del archivo debe estar en una ruta relativa a la carpeta que contiene el #include. Por ejemplo:
La directiva <!-- #include file="my_include.asp" -->
incluirá my_include.asp
de la misma carpeta.
La directiva <!-- #include file="lib/my_include.asp" -->
incluirá my_include.asp
de la carpeta lib
debajo de la carpeta actual donde se ejecuta el script.
La directiva <!-- #include file="../my_include.asp" -->
incluirá my_include.asp
de la carpeta lib
sobre la carpeta actual (la carpeta principal) donde se ejecuta el script.
La directiva <!-- #include file="../lib/my_include.asp" -->
incluirá my_include.asp
de la carpeta lib
que es hija de la carpeta principal (o del hermano de la carpeta actual).
Los dos últimos ejemplos no funcionarán si las rutas principales no están habilitadas.
** Sé que existen hacks para habilitar múltiples sitios de IIS en IIS5.1 de XP.