Pergunta

Existe uma maneira recomendada para devolver uma aplicação asp.net além de tocar web.config de dentro do aplicativo? é HttpRuntime.UnloadAppDomain(); a forma preferida para fazer isso? e em caso afirmativo, onde você faz isso? No descarregamento de uma página ou em algum outro lugar no aplicativo?

Foi útil?

Solução

Se este for .NET 2.0 ou superior, então você pode adicionar em um arquivo "app_offline.htm", fazer um pedido para o servidor, removê-lo e, em seguida, fazer outra solicitação para o servidor.

Esta sequência de eventos irá forçar ASP.NET para descarregar a aplicação durante o tempo que o arquivo app_offline.htm existe na pasta.

blog de Scott Guthrie sobre ele: http://weblogs.asp.net/scottgu/archive/2005 /10/06/426755.aspx

Outras dicas

web.config Tocar de dentro de um aplicativo é uma má idéia, IMO. Além disso, a idéia de ter um arquivo que você modificar é um pouco Hackney, IMO.

A documentação afirma especificamente que UnloadAppDomain vai fechar o aplicativo para baixo:

UnloadAppDomain permite desligamento programática de aplicativos não utilizados.

Você deve ser capaz de fazer isso em qualquer lugar chamada no aplicativo. Lembre-se, você pode obter um SecurityException , por isso verifique -se que o tempo de execução dá-lhe as permissões apropriadas (que você pode querer colocar isso em uma biblioteca e fazer uma chamada e, em seguida, definir a biblioteca em GAC com evidências para dar-lhe total confiança).

este código de trabalho para mim. basta chamá-lo para aplicação de recarga.

System.Web.HttpRuntime.UnloadAppDomain();

Leia mais

Este método só vai descarregar a nossa aplicação. Se você acabou de colocar este método em um botão web ASP.NET você estiver totalmente feito. Então, quando vai a nossa aplicação recarregado? Na verdade, se você clicar com o botão primeiro irá lançar o nosso método e aplicação de descarregamento. Mais adiante, a página da web que estão em naquele momento será recarregado também, porque nós simplesmente clicar em um botão e a página web deve atualizar. Depois de lançar o nosso método do processo de atualização da página fará com que a nossa aplicação para recarregar também.

Você pode parar e iniciar o pool de aplicativos associado com o aplicativo também.

Você pode fazer isso chamando o HttpRuntime.ShutdownAppDomain método (você vai precisar usar a reflexão para invocá-lo, uma vez que é um método estático privado)

Como reiniciar um processo de trabalho IIS programaticamente (ou seja, desligar o ASP.NET Domínio atual) para um exemplo de como eu uso este método em uma 'Restart' API REST

Você pode reiniciar com segurança de uma aplicação web, criando ou renomear uma pasta em tempo de execução sob o diretório do aplicativo. Obviamente, você precisa dar o usuário atribuído para executar o aplicativo "modificar" os direitos para o diretório web ou para um diretório sub sob ele.

o método é mencionado no http://www.bartlannoeye.be/ blog / reiniciando-a-.net-web-application-sem-reiniciando-iis

Eu usei o seguinte código para fazê-lo no meu caso. Modificá-lo para trabalhar em um "gravável" sub-diretório

protected void RestartButton_Click(object sender, EventArgs e)
{
    //restart web app (instead of iisreset)
    DirectoryInfo dir = new DirectoryInfo(Server.MapPath("restart"));
    if (dir.Exists)
    {
        Directory.Move(dir.FullName, dir.FullName + "ed");
    }
    else
    {
        DirectoryInfo dired = new DirectoryInfo(Server.MapPath("restarted"));
        if (dired.Exists)
        {
            Directory.Move(dired.FullName, dir.FullName);
        }
        else
        {
            Directory.CreateDirectory(dir.FullName);
        }
    }
}

Se você não quer parar e iniciar o pool de aplicativos que você sempre pode reciclá-lo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top