ASP.NET 2.0: cómo utilizar app_offline.htm

120

He leído sobre el app_offline.htmarchivo que se puede colocar dentro de la raíz de una aplicación .NET 2.0 que, en esencia, cerrará la aplicación y evitará que se soliciten otras páginas.

Coloqué el archivo en la raíz y mi sitio todavía se carga. Entré en documentos predeterminados en IIS y lo configuré app_offline.htmy el sitio todavía se carga (aunque esto podría haber sido un problema de almacenamiento en caché)

De todos modos, ¿alguien ha tenido problemas al usar esto? ¿Estoy haciendo algo mal?

Jack Marchetti
fuente
¿Existe una página de Microsoft que documente esto?
Coops
Documentación oficial: msdn.microsoft.com/en-us/library/ff925031.aspx
Brian
He utilizado con éxito app_offline.htm para ocultar el contenido de mi aplicación web y mostrar la página temporal. Sin embargo, tengo problemas para revisar los datos originales incluso después de eliminar el archivo app_offline.htm. Su es mi pregunta: stackoverflow.com/questions/42979042/…
naz786

Respuestas:

160

He utilizado el truco app_offline.htm extremadamente útil para cerrar / actualizar sitios en el pasado sin ningún problema.

Asegúrese de que está colocando el archivo "app_offline.htm" en la "raíz" del sitio web que ha configurado dentro de IIS.

También asegúrese de que el archivo tenga el nombre exactamente como debería ser: app_offline.htm

Aparte de eso, no debería haber otros cambios en IIS que deba realizar, ya que el procesamiento de este archivo (con este nombre específico) lo maneja el tiempo de ejecución de ASP.NET en lugar del propio IIS (para IIS v6).

Sin embargo, tenga en cuenta que, aunque colocar este archivo en la raíz de su sitio obligará a la aplicación a "cerrarse" y mostrar el contenido del archivo "app_offline.htm", cualquier solicitud existente seguirá sirviendo el sitio web real. a ellos. Solo las solicitudes nuevas obtendrán el contenido app_offline.htm.

Si aún tiene problemas, pruebe los siguientes enlaces para obtener más información:

App_Offline.htm de Scott Gu

App_Offline.htm y solucionar la función "Errores compatibles con IE"

¿App_offline.htm detendrá las solicitudes actuales o solo las nuevas?

CraigTP
fuente
6
@JackM - ¡No hay problema! De hecho, a menudo dejo el archivo en mi sitio web y lo llamo "xapp_offline.htm". Por lo tanto, simplemente se sienta allí sin hacer nada. Cuando quiero actualizar parte o la totalidad del sitio, simplemente cambio el nombre del archivo y elimino el prefijo "x" (esto generalmente se hace a través de FTP). Esto me cierra el sitio, realizo la actualización y luego cambio el nombre del archivo con el prefijo "x".
CraigTP
@JackMarchetti: ¿esto también funcionará para los sitios web ASP.NET MVC que usan enrutamiento global.asax? Revisé todas las sugerencias aquí, pero todavía no tengo suerte para que esto funcione :(
Squig
Actualización al comentario anterior: está funcionando ahora y debe haber sido algún tipo de problema de almacenamiento en caché. Había usado <CTRL> + Refresh, pero presumiblemente estaba siendo almacenado en caché en otro lugar.
Squig
¿Existe una página de Microsoft que documente esto?
Coops
1
@CodeBlend Bueno, el enlace al blog de ScottGu es bastante oficial, pero supongo que la página de Microsoft más "oficial" sería esta en MSDN: msdn.microsoft.com/en-us/library/vstudio/…
CraigTP
47

Asegúrese de que su archivo app_offline.htm tenga al menos 512 bytes de longitud. Un archivo app_offline.htm de cero bytes no tendrá ningún efecto.

ACTUALIZACIÓN: Las versiones más nuevas de ASP.NET/IIS pueden comportarse mejor que cuando escribí esto por primera vez.

ACTUALIZACIÓN 2: si está utilizando ASP.NET MVC, agregue lo siguiente a web.config:

<?xml version="1.0"?>
<configuration>
    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true" />
    </system.webServer>
</configuration>
Mark Richman
fuente
1
Tenía el nombre de archivo exacto con un archivo vacío y eso funcionó: la página en blanco se muestra independientemente de la URL que usé
Coops
Consulte este enlace para ver el problema del límite de 512 bytes: codeproject.com/Articles/21319/…
Massood Khaari
Esto es especialmente cierto para las versiones anteriores de IE que pueden reemplazar la página con su propio mensaje de error
ChewToy
Scott Gu lo describe también en su blog.
Matt
2
Solo pude hacer que mi sitio MVC entrara en modo sin conexión de la aplicación reemplazando completamente mi web.config con el anterior
Matthew Lock
14

Tenga en cuenta que esto se comporta igual en IIS 6 y 7.xy .NET 2, 3 y 4.x.

También tenga en cuenta que cuando app_offline.htm está presente, IIS devolverá este código de estado http:

HTTP/1.1 503 Service Unavailable

Todo esto es por diseño. Esto permite que su equilibrador de carga (o lo que sea) vea que el servidor está fuera de línea.

Jonesome reinstalar a Monica
fuente
1
Seguramente no quiere que su equilibrador de carga piense que el servidor está fuera de línea, porque quiere mostrarlo app_offline.htma los usuarios durante su ventana de mantenimiento.
Luke
2
@Luke: Un mejor ejemplo de por qué es útil una respuesta 503: es preferible que el rastreador web de Google sepa que su sitio web está inactivo, en lugar de decidir indexar su contenido "sitio inactivo" (y marcar su sitio como si tuviera un montón de duplicados contenido). Además, puede ser útil si su CDN puede detectar que su origen está inactivo y, por lo tanto, evitará almacenar en caché su contenido.
Brian
10

Posible problema de permisos

Sé que esta publicación es bastante antigua, pero encontré un problema similar y mi archivo estaba escrito correctamente.

Originalmente creé el archivo app_offline.htm en otra ubicación y luego lo moví a la raíz de mi aplicación. Debido a mi configuración, tuve un problema de permisos.

El sitio web actuó como si no estuviera allí. Crear el archivo dentro del directorio raíz en lugar de moverlo, solucionó mi problema. (O simplemente puede arreglar el permiso en propiedades-> seguridad)

Espero que ayude a alguien.

Jeremy A. West
fuente
4

Asegúrese de que app_offline.htmesté en la raíz del directorio virtual o sitio web en IIS.

Andrew Hare
fuente
Definitivamente está en la raíz. tengo mi entrada \ wwwroot [WebsiteDirectory] \ app_offline.htm
Jack Marchetti
3

Asegúrese de que las extensiones de nombre de archivo estén visibles en el explorador y que el nombre de archivo sea realmente

app_offline.htm

no

app_offline.htm.htm

nPcomp
fuente
0

Me encontré con un problema muy similar a la pregunta original que me tomó un poco de tiempo resolver.

En caso de que alguien más esté trabajando en una aplicación MVC y encuentre su camino en este hilo, asegúrese de tener un mapeo comodín para el .Net aspnet_isapi.dll apropiado definido. Tan pronto como hice esto, mi app_offline.htm comenzó a comportarse como se esperaba.


Pasos de configuración de IIS 6

En Propiedades de la aplicación IIS, seleccione la pestaña Directorio virtual.

En Configuración de la aplicación, haga clic en el botón Configuración.

En Mapas de aplicaciones comodín, haga clic en el botón Insertar.

Ingrese C: \ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_isapi.dll, haga clic en Aceptar.

Peter Bernier
fuente