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

?
Foi útil?

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.

msdn.microsoft.com/en-us/library/ms998288.aspx

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;)

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