2009-08-20 11 views
4

Nous avons une application ASP.NET 3.5 de longue durée que nous passons d'un serveur physique exécutant Windows 2005 + IIS 6 à un serveur virtuel exécutant Windows 2008 + IIS7. La nouvelle machine prendra l'identification de l'ancienne - IP, DNS, etc.Migration de serveur ASP.NET

Nos clients gardent notre site pendant des heures - parfois même des jours. Ma crainte est que lorsque nous faisons ce basculement, soudainement tous ces états de vue échoueront à valider parce que le MachineKey aura changé.

Ce type de perturbation est-il évitable? Puis-je 'régler' la machineKey du nouveau serveur pour qu'elle soit la même que celle utilisée actuellement? Je pense que c'est autogénéré - puis-je savoir de quoi il s'agit?

Ou, est-ce que ça vaut le coup - est-ce une situation où les utilisateurs ne devraient pas s'attendre à être en mesure de frapper un site Web pour longtemps?

Répondre

4
<system.web> 
    <machineKey validationKey="Generate on your own" decryptionKey="Generate on your own" validation="3DES"/> 
</system.web> 

Vous avez raison, le déplacement invalidera tous les cookies d'autorisation. Je crois, à moins que vous n'ayez activé le cryptage viewstate, viewstate ira bien.

Si vous ajoutez l'attribut machinekey, peu importe où le site est hébergé, tant que cette clé machine est la même, le cryptage et le décryptage seront corrects. De plus, vous devrez/devriez utiliser ceci si votre site est hébergé dans un environnement à charge équilibrée.

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

2

Généralement, une migration comme celui-ci serait une panne complète. La plupart des sites annoncent cela, et mettent en place une page d'interruption temporaire pendant la transition. Aussi, j'imagine qu'il y aura un moment où aucune machine n'est disponible, donc indépendamment de la clé de la machine et de viewstate, les demandes échoueront. Je vous recommande de forcer une panne complète. Cela vous permettra également de tester le nouveau serveur avant sa mise en ligne. Sinon, vous pouvez donner de nouvelles adresses IP à la nouvelle machine et forcer lentement le nouveau trafic vers la nouvelle, tandis que les connexions existantes resteront sur l'ancienne. Cela nécessiterait une sorte de périphérique (routeur, commutateur de contenu, etc) pour gérer cela. Vous ne savez pas si votre serveur est derrière un appareil comme celui-là.

Mais revenons à votre question, oui, vous pouvez régler manuellement la touche de la machine. C'est dans le fichier machine.config. Prenez cette section de votre ancienne machine et le copier sur:

<machineKey 
validationKey="..."   
decryptionKey="..." 
... 
/> 

Il est généralement situé ici: C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ CONFIG \ machine.config

Voici un article sur l'utilisation du same machine Key.

+0

Merci pour cela - il m'est apparu que la définition de la clé maintenant ferait simplement le problème que je suis inquiet de se produire plus tôt. Autrement dit, la migration se passerait bien, mais les demandes sur le serveur existant échoueraient. – n8wrl

2

Vous pouvez définir explicitement la machineKey, en fait, cela se fait assez souvent lorsque vous utilisez différents modèles d'état de session avec des batteries de serveurs Web. Here's a link sur la façon de le faire (près du bas de l'article). Malheureusement, si vous n'avez pas généré manuellement votre machineKey actuelle, celle-ci sera générée aléatoirement chaque fois que le domaine d'application redémarrera (ce qui signifie que vous êtes vulnérable aux problèmes de validation si votre serveur a déjà hic).

Cependant, vous pouvez découvrir la machineKey actuelle qui est utilisé en regardant dans le registre à

HKU \ SID \ Software \ Microsoft \ ASP.NET \ 2.0.50727.0

(si vous utilisez IIS6). Si vous faites attention, vous pouvez configurer la nouvelle boîte avec la même clé, migrer et ne rien avoir de mal. Mais ce sont les derniers mots célèbres;)