2008-08-28 16 views

Respuesta

12

Sí, simplemente no puede provenir del sitio que tiene el archivo app_offline.htm. La imagen debería estar alojada en otro lugar.

+2

No veo cómo esto responde a la pregunta, ya que dice claramente: sin tener que apuntar a una dirección URL diferente en otro sitio – sboisse

+0

@sboisse Cuando se utiliza un app_offline.htm con IIS que DON' T tiene que redirigir a otra URL en absoluto. No cambias NADA, simplemente coloca el archivo htm. IIS hace el resto. Sí, técnicamente, IIS está haciendo un redireccionamiento, sin embargo, mi respuesta responde correctamente esto ya que la pregunta se hizo "sin tener que apuntarlos a una URL diferente en un sitio diferente". Esto NO los señala en ninguna parte, no es una URL o sitio diferente. En lo que a nosotros respecta, el archivo htm simplemente muestra en lugar de la página solicitada. –

+0

Sí, pero las imágenes no se mostrarán ya que cada solicitud realizada en el sitio devolverá ese archivo htm, incluidas las solicitudes de imágenes. Mi comprensión de la pregunta es: ¿hay alguna manera de que las imágenes se muestren en app_offline.htm sin tener que recuperar las imágenes de otro sitio, es decir, el mismo sitio donde se coloca app_offline.htm? Tu respuesta no cumple esas 2 condiciones. ¿O si me falta algo? – sboisse

3

Si desea hacer un poco más de trabajo, puede crear fácilmente una página personalizada para desconectar la aplicación.

Una posible solución:

  • Crear DisplayOfflineMessage.aspx: Contiene etiqueta para mostrar su mensaje fuera de línea de Aplicación [ "OfflineMessage"].
  • ManageOfflineStatus.aspx: contiene una casilla de verificación fuera de línea/en línea, área de texto para mensajes fuera de línea y un botón de actualización. El botón de actualización establece dos variables de nivel de aplicación, una para el mensaje y una bandera que indica si la aplicación está en línea. (Esta página sólo debe ser accesible a los administradores)

Luego, en Global.asax

public void Application_Start(object sender, EventArgs e) 
{ 
    Application["OfflineMessage"] = "This website is offline."; 
    Application["IsOffline"] = false; 
} 



public void Application_OnBeginRequest(object sender, EventArgs e) 
{ 
    bool offline = Convert.ToBoolean(Application["IsOffline"]); 

    if (offline) 
    { 

     // TODO: allow access to DisplayOfflineMessage.aspx and ManageOfflineStatus.aspx 

     // redirct requests to all other pages 
     Response.Redirect("~/DisplayOfflineMessage.aspx"); 
    } 
} 
2

Tengo una idea.

Puede crear una aplicación separada, apuntando a la misma carpeta, sin ASP.NET habilitado. Entonces el acceso a las imágenes por esta aplicación no se verá afectado por el archivo app_offline.htm. O bien, apunte esa aplicación directamente a la carpeta con contenido estático, no habrá ningún archivo app_offline.

Pero, por supuesto, debe asignar un nombre de DNS separado para esta aplicación, tipo de static.somedomain.com.

10

Otra solución es incrustar la imagen dentro de la página app_offline.htm utilizando un URI de datos. Existe un amplio soporte para esto en estos días - vea lo siguiente para más detalles - http://en.wikipedia.org/wiki/Data_URI_scheme

2

Si no admite navegadores anteriores a IE 8, siempre puede incrustar las imágenes usando un URI de datos.

http://css-tricks.com/data-uris/

+1

Gran herramienta vinculada a en ese artículo: http://jpillora.com/base64-encoder/ – mhenry1384

Cuestiones relacionadas