asp.net - tutorial - ¿Cuál es la diferencia entre permitir que una página web de Visual Studio precompilada sea actualizable y no?
paginas web asp.net ejemplos (2)
Al desmarcar la opción "Permitir que este sitio precompilado sea actualizable" compila las páginas .Aspx, no solo los archivos de códigos (.VB / .CS). Dejarlo marcado le permite realizar ciertos cambios en los archivos .Aspx después de que se haya implementado sin volver a compilar (por ejemplo, mover la posición de un control o agregar un marcado HTML adicional).
Después de leer su descripción de los problemas de implementación, parece más probable que los errores se produzcan porque IIS necesita actualizar el Pool de aplicaciones. En un VPS de gama baja, a veces tiene sentido rebotar (reiniciar) si tiene ese lujo.
Lea los siguientes artículos de MSDN para obtener más información sobre la precompilación del sitio.
http://msdn.microsoft.com/en-us/library/399f057w(v=vs.80).aspx
http://msdn.microsoft.com/en-us/library/ms247286(v=vs.80).aspx
Construí un sitio web varias veces utilizando el valor predeterminado "permitir que este sitio precompilado sea actualizable"; sin embargo, en la compilación más reciente, el sitio web estaba muy roto. Después de jugar con los .dll (borrarlos y reemplazarlos, en el contenedor) noté que ciertas partes del sitio web comenzaban a funcionar nuevamente, pero si puse todo el .dll original en el sitio, se rompió.
Estoy usando páginas aspx con varias extensiones web Ajax. Estos fueron agregados recientemente y pueden ser la fuente del problema. Desmarqué la opción "Permitir que este sitio precompilado sea actualizable" y agregó todo tipo de archivos de códigos compilados adicionales a la papelera, y todos los problemas con el sitio web desaparecieron ... ¿Qué está pasando aquí? ¿Cuál fue la diferencia?
No parece haber ninguna diferencia en la forma en que actualizo el sitio, solo una publicación directa de Visual Studio cada vez.
Cualquier idea sería apreciada.
Tengo una respuesta para mis propias preguntas, basada en lo que dijo NoAlias. Leí los dos enlaces y encontré lo siguiente:
Precompilación solo para implementación
Cuando realiza la precompilación solo para la implementación, el compilador produce ensamblajes a partir de prácticamente todos los archivos fuente de ASP.NET que normalmente se compilan en tiempo de ejecución. Esto incluye código de programa en páginas, archivos .cs y archivos de clase .vb, otros archivos de código y archivos de recursos. El compilador elimina todas las fuentes y marcas de la salida. En el diseño resultante, se generan archivos compilados para cada uno de los archivos .aspx (con la extensión .compiled) que contienen punteros al ensamblado apropiado para esa página. Para cambiar el sitio web, incluido el diseño de las páginas, debe cambiar los archivos originales, volver a compilar el sitio y volver a desplegar el diseño. La única excepción es la configuración del sitio; Puede realizar cambios en el archivo Web.config en el servidor de producción sin tener que volver a compilar el sitio. Esta opción proporciona el mayor grado de protección para sus páginas y el mejor rendimiento al inicio.Precompilación para implementación y actualización
Cuando precompila para implementación y actualización, el compilador produce ensamblajes a partir de todos los códigos fuente (excepto el código de página en páginas de un solo archivo) y de otros archivos que normalmente producen ensamblajes, como archivos de recursos. El compilador convierte los archivos .aspx en archivos individuales que utilizan el modelo de código subyacente compilado y los copia en el diseño. Esta opción le permite realizar cambios limitados en las páginas web de ASP.NET en su sitio después de compilarlas. Por ejemplo, puede cambiar la disposición de controles, colores, fuentes y otros aspectos de apariencia de las páginas. También puede agregar controles, siempre que no requieran controladores de eventos u otro código. Cuando el sitio se ejecuta por primera vez, ASP.NET realiza una compilación adicional para crear resultados a partir del marcado. NotaUn sitio actualizable precompilado no permite que varias páginas hagan referencia a la misma clase CodeFile.
Recientemente realicé cambios en el sitio para incluir 2 páginas aspx que hacen referencia al mismo CodeFile (el mismo código VB en el fondo) Cada página tenía propiedades html ligeramente diferentes, pero necesitaba tener idénticos CodeFiles, por lo que para mi segunda página ASP eliminé el archivo de código VB generado automáticamente y luego hace referencia a un CodeFile diferente en el HTML.
Como se indica anteriormente, los sitios actualizables precompilados no permiten que varias páginas hagan referencia a la misma clase de archivo de código. Por eso algunas de mis páginas no funcionaban.
A partir de ahora, debo evitar usar la casilla de verificación predeterminada "Permitir que este sitio precompilado sea actualizable"; Debe permanecer sin marcar para que mi sitio web utilice los VB CodeFiles a los que se hace referencia en mis páginas múltiples.
Conclusión: varias páginas aspx que hacen referencia al mismo CodeFile deben precompilarse para que se ejecuten correctamente. Esto significa que el sitio no podrá realizar ningún cambio sin redistribuirlo.