2009-01-05 52 views
5

He creado un proyecto de implementación web utilizando la plantilla para Visual Studio 2008 para una aplicación web ASP.NET 3.5 (no un sitio web).Aplicación web ASP.NET precompilada: error "System.Web.HttpException file filename.aspx no se ha compilado previamente y no se puede solicitar".

Recopilé el proyecto que creó los archivos necesarios para la implementación. Copié las carpetas resultantes (bin, archivos estáticos y todas las carpetas con los marcadores de posición aspx, etc.) a un servidor de transferencia donde quería probar la aplicación.

Si No bandera de la opción "Permitir a este sitio precompilado sea actualizable", me sale este mensaje de error en cada página me carga en el navegador:

 
System.Web.HttpException file PAGENAME.aspx has not been pre-compiled, 
and cannot be requested. 

la última línea en el seguimiento de la pila:

 
System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(
    VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, 
    Boolean allowBuildInPrecompile) +8756366 

Si puedo comprobar la opción, todo está bien (supongo que debido a que el aspx/ascx real todavía están allí en su forma original).

¿Alguna idea de lo que me falta aquí? ¿Hay alguna configuración o archivo especial que olvidé copiar?

¡Gracias!

Notas:

  • tengo unas pocas referencias a ensamblados de terceros
  • He comprobado la carpeta bin en el servidor de ensayo. Contiene el ensamblado precompilado que contiene todas las clases (utilicé Reflector para analizar el ensamblaje).

Respuesta

7

Todos los archivos ASPX sólo deben contener

Este es un archivo generado por marcador de la herramienta de compilación previa, y deben ser eliminados no!

Borre todo en su carpeta bin y publique la web de nuevo. Asegúrese de tomar los archivos del directorio donde realizó la publicación.

Asegúrese de copiar también los archivos .compiled que se encuentran en la carpeta bin.

+0

¡Gracias por tu respuesta! No contenía la solución exacta, pero me llevó a volver a verificar las carpetas bin. Olvidé insertar los archivos "compilados" en mi procedimiento de copia automática en el servidor. Editaré tu respuesta y la aceptaré. – splattne

1

Para el registro, que se olvidó de copiar estos archivos ".compiled" (MSDN documentation: File Handling During ASP.NET Precompilation):

Para los archivos ejecutables en una aplicación ASP.NET Web , las asambleas del compilador y archivos con la .compiled nombre de archivo extensión. El nombre del ensamblado es generado por el compilador. El archivo .compiled no contiene código ejecutable. En cambio, contiene solo la información que ASP.NET necesita para encontrar el ensamblado apropiado.

Después de la aplicación precompilada está implementado , ASP.NET usa los ensamblajes en la carpeta Bin para procesar solicitudes. La salida de precompilación incluye archivos .aspx o .asmx como marcadores de posición para las páginas. Los archivos de marcador de posición no contienen ningún código. Existen solo para y proporcionan una forma de invocar a ASP.NET para una solicitud de página específica y para que los permisos de archivo se puedan establecer para restringir el acceso a las páginas a .

Cuestiones relacionadas