Migração ASP.NET Servidor
-
19-09-2019 - |
Pergunta
Nós temos uma aplicação de longo viveu ASP.NET 3.5 estamos passando de um servidor físico que executa o Windows 2005 + IIS 6 para um virtual rodando Windows 2008 + IIS7. A nova máquina irá assumir a identidade do antigo -. IP de, DNS, etc
Nossos clientes manter nosso site por horas - às vezes até mesmo dias. Meu medo é que quando fazemos este switch-over, de repente todos os vários daqueles ViewStates vai deixar de validar porque o MachineKey terá mudado.
É este tipo de evitável interrupção? Can I 'set' machineKey do novo servidor para ser o mesmo que aquele em uso agora? Eu acho que é gerado automaticamente - posso descobrir o que é
?Ou, é este vale a pena mesmo que - é esta uma situação em que os usuários não devem esperar ser capaz de bater um site para que chupar-it-up longo
?Solução
<system.web>
<machineKey validationKey="Generate on your own" decryptionKey="Generate on your own" validation="3DES"/>
</system.web>
Você está correto, movendo invalidará todos Autorização Cookies. Eu acredito que, a menos que tenha criptografia viewstate ligado, viewstate vai ficar bem.
Se você adicionar o atributo machinekey, então não importa onde o site está hospedado, enquanto que a chave da máquina é a mesma, criptografia e descriptografia vai ficar bem. Além disso, você precisará / deve usar isso se o seu site está hospedado em um ambiente de carga balanceada.
Outras dicas
Normalmente uma migração como este seria uma falha completa. A maioria dos sites anunciar isso, e colocar uma página interrupção temporária durante a transição. Além disso, eu imagino que haverá um momento em que nem a máquina está disponível, por isso, independentemente da chave da máquina e viewstate, solicitações falhará. Eu recomendaria que você forçar uma paralisação completa. Isso também permitirá que você testar o novo servidor antes de entrar ao vivo.
Como alternativa, você poderia dar a nova máquina novo IP de, e lentamente forçar o tráfego novo para o novo, enquanto as ligações existentes permaneceriam na antiga. Isso exigiria algum tipo de dispositivo (roteador, switch de conteúdo, etc) para gerir este. Não tenho certeza se o servidor está protegido por um dispositivo assim.
Mas voltando ao que você pergunta, sim, você pode configurar manualmente a chave da máquina. Isto é, no machine.config. Tome esta secção da sua máquina velha e copie-o:
<machineKey
validationKey="..."
decryptionKey="..."
...
/>
Ele geralmente está localizado aqui: C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ CONFIG \ machine.config
Aqui está um artigo sobre como usar o mesma máquina Key .
Você pode explicitamente definir o machineKey, na verdade, isso é feito muito comumente quando você está usando diferentes modelos de estado de sessão com fazendas web. Aqui está um link sobre como fazê-lo (na parte inferior do artigo).
Infelizmente, se você não tiver gerado manualmente o machineKey atual já, em seguida, ele será gerado aleatoriamente cada vez que as reinicializações de domínio de aplicativo (que significa que você está vulnerável a problemas de validação agora se o servidor já soluçou).
No entanto, você pode descobrir o machineKey atual que está em uso por procurando no registro em
HKU \ SID \ Software \ Microsoft \ ASP.NET \ 2.0.50727.0
(se você estiver usando IIS6). Se você tiver cuidado, você pode ser capaz de configurar a nova caixa com a mesma chave, migrar, e ter errado nada movimento. Mas esses são famosas últimas palavras;)