ASP.NET 2.0 - Como usar app_offline.htm


120

Eu li sobre o app_offline.htmarquivo que pode ser colocado na raiz de um aplicativo .NET 2.0, que basicamente fecha o aplicativo e desativa a solicitação de qualquer outra página.

Coloquei o arquivo na raiz e meu site ainda carrega. Entrei em documentos padrão no IIS e o configurei como app_offline.htme o site ainda carrega (no entanto, pode ter sido um problema de cache)

De qualquer forma, alguém teve problemas com isso? Estou fazendo algo errado?


Existe uma página da Microsoft que documenta isso?
Coops de



Usei com sucesso app_offline.htm para ocultar o conteúdo do meu aplicativo da web e exibir a página temporária. No entanto, estou tendo problemas para revisar os dados originais, mesmo depois de excluir o arquivo app_offline.htm. Minha pergunta é dela: stackoverflow.com/questions/42979042/…
naz786

Respostas:


160

Eu usei o truque app_offline.htm extremamente útil para desligar / atualizar sites no passado sem quaisquer problemas.

Certifique-se de que você está realmente colocando o arquivo "app_offline.htm" na "raiz" do site que você configurou no IIS.

Certifique-se também de que o nome do arquivo seja exatamente como deveria ser: app_offline.htm

Além disso, não deve haver nenhuma outra alteração no IIS que você precise fazer, já que o processamento desse arquivo (com este nome específico) é feito pelo tempo de execução do ASP.NET em vez do próprio IIS (para IIS v6).

Esteja ciente, no entanto, que embora colocar este arquivo na raiz do seu site force o aplicativo a "desligar" e exibir o conteúdo do próprio arquivo "app_offline.htm", quaisquer solicitações existentes ainda terão o site real servido para eles. Apenas novas solicitações obterão o conteúdo app_offline.htm.

Se você ainda estiver tendo problemas, tente os seguintes links para obter mais informações:

App_Offline.htm de Scott Gu

App_Offline.htm e contornar o recurso "Erros amigáveis ​​do IE"

O app_offline.htm interromperá as solicitações atuais ou apenas as novas?


6
@JackM - Sem problemas! Na verdade, costumo deixar o arquivo no meu site e chamá-lo de algo como "xapp_offline.htm". Portanto, ele apenas fica sentado lá sem fazer nada. Quando quero atualizar algum ou todo o site, simplesmente renomeio o arquivo e removo o prefixo "x" (isso geralmente é feito por FTP). Isso fecha o site para mim, eu faço a atualização e renomeio o arquivo com o prefixo "x"!
CraigTP de

@JackMarchetti - Isso também funcionará para sites ASP.NET MVC que usam roteamento global.asax? Eu verifiquei todas as sugestões aqui, mas ainda não tive sorte em fazer isso funcionar :(
Squig

Atualização do comentário anterior: está funcionando agora e deve ter havido algum tipo de problema de cache. Eu usei <CTRL> + Atualizar, mas provavelmente estava sendo armazenado em cache em outro lugar.
Squig

Existe uma página da Microsoft que documenta isso?
Coops de

1
@CodeBlend Bem, o link para o blog do ScottGu é bastante oficial, mas suponho que a página mais "oficial" da Microsoft seria esta no MSDN: msdn.microsoft.com/en-us/library/vstudio/…
CraigTP

47

Certifique-se de que o arquivo app_offline.htm tenha pelo menos 512 bytes. Um app_offline.htm de zero byte não terá efeito.

ATUALIZAÇÃO: as versões mais recentes do ASP.NET/IIS podem se comportar melhor do que quando escrevi isso pela primeira vez.

ATUALIZAÇÃO 2: Se você estiver usando ASP.NET MVC, adicione o seguinte ao web.config:

<?xml version="1.0"?>
<configuration>
    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true" />
    </system.webServer>
</configuration>

1
Eu tinha o nome de arquivo exato com um arquivo vazio e funcionou - página em branco exibida independentemente do url que usei
Coops

Verifique este link para o problema de limite de 512 bytes: codeproject.com/Articles/21319/…
Massood Khaari

Isso é verdadeiro especialmente para versões mais antigas do IE, que podem substituir a página por sua própria mensagem de erro
ChewToy

Scott Gu descreve isso também em seu blog.
Matt

2
Eu só consegui fazer meu site MVC entrar no modo offline do aplicativo substituindo completamente meu web.config pelo acima
Matthew Lock

14

Observe que isso se comporta da mesma forma no IIS 6 e 7.x, e no .NET 2, 3 e 4.x.

Observe também que, quando app_offline.htm estiver presente, o IIS retornará este código de status http:

HTTP/1.1 503 Service Unavailable

Isso tudo é por design. Isso permite que seu balanceador de carga (ou qualquer outro) veja se o servidor está off-line.


1
Certamente você não quer que seu balanceador de carga pense que o servidor está offline, porque deseja exibir o app_offline.htmpara os usuários durante a janela de manutenção.
Lucas de

2
@Luke: Um exemplo melhor de por que uma resposta 503 é útil: é preferível que o rastreador da web do Google saiba que seu site está fora do ar, em vez de decidir indexar o conteúdo do "site está fora do ar" (e sinalizar seu site como tendo uma tonelada de conteúdo duplicado conteúdo). Além disso, pode ser útil se seu CDN puder detectar que sua origem está inativa e, assim, evitar o armazenamento em cache de seu conteúdo.
Brian,

10

Possível problema de permissão

Sei que esta postagem é bastante antiga, mas tive um problema semelhante e meu arquivo foi escrito corretamente.

Eu originalmente criei o arquivo app_offline.htm em outro local e, em seguida, movi-o para a raiz do meu aplicativo. Por causa da minha configuração, tive um problema de permissão.

O site agia como se não estivesse lá. Criar o arquivo no diretório raiz em vez de movê-lo corrigiu meu problema. (Ou você pode apenas corrigir a permissão em propriedades-> segurança)

Espero que ajude alguém.


4

Certifique-se de que app_offline.htmesteja na raiz do diretório virtual ou site do IIS.


Está definitivamente na raiz. tenho meu inetput \ wwwroot [WebsiteDirectory] \ app_offline.htm
Jack Marchetti

3

Certifique-se de que as extensões de nome de arquivo estejam visíveis no explorer e que nome de arquivo seja realmente

app_offline.htm

não

app_offline.htm.htm


0

Encontrei um problema muito semelhante à pergunta original que demorei um pouco para resolver.

Apenas no caso de outra pessoa estar trabalhando em um aplicativo MVC e encontrar seu caminho neste segmento, certifique-se de ter um mapeamento curinga para o .Net aspnet_isapi.dll apropriado definido. Assim que fiz isso, meu app_offline.htm começou a se comportar conforme o esperado.


IIS 6 etapas de configuração

Em Propriedades do aplicativo IIS, selecione a guia Diretório virtual.

Em Configurações do aplicativo, clique no botão Configuração.

Em Mapas de aplicativos curinga, clique no botão Inserir.

Digite C: \ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_isapi.dll e clique em OK.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.