ASP.NET Server Migration - PullRequest
       16

ASP.NET Server Migration

4 голосов
/ 20 августа 2009

У нас есть долгоживущее приложение ASP.NET 3.5, которое мы переносим с физического сервера под управлением Windows 2005 + IIS 6 на виртуальный сервер под управлением Windows 2008 + IIS7. Новый компьютер примет идентификатор старого - IP, DNS и т. Д.

Наши клиенты поддерживают наш сайт часами, иногда даже днями. Я боюсь, что когда мы сделаем это переключение, внезапно все их состояния не смогут проверить, потому что MachineKey изменится.

Можно ли избежать такого рода нарушений? Могу ли я «установить» ключ машины нового сервера таким же, какой он используется сейчас? Я думаю, что он генерируется автоматически - могу ли я узнать, что это такое?

Или это того стоит - действительно ли это сложная ситуация, когда пользователи не должны ожидать, что смогут заходить на сайт так долго?

Ответы [ 3 ]

4 голосов
/ 20 августа 2009
<system.web>
    <machineKey validationKey="Generate on your own" decryptionKey="Generate on your own" validation="3DES"/>
</system.web>

Вы правы, переезд аннулирует все куки авторизации. Я считаю, что если у вас не включено шифрование viewstate, viewstate будет в порядке.

Если вы добавите атрибут machinekey, то не имеет значения, где размещен сайт, если этот машинный ключ одинаков, шифрование и дешифрование будут в порядке. Кроме того, вам нужно / нужно использовать это, если ваш сайт размещен в среде с балансировкой нагрузки.

msdn.microsoft.com / EN-US / библиотека / ms998288.aspx

2 голосов
/ 20 августа 2009

Вы можете явно установить machineKey, на самом деле, это делается довольно часто, когда вы используете различные модели состояния сеанса с веб-фермами. Вот ссылка о том, как это сделать (в нижней части статьи).

К сожалению, если вы еще не сгенерировали текущий ключ machineKey вручную, он будет генерироваться случайным образом при каждом перезапуске домена приложения (что означает, что вы прямо сейчас подвержены проблемам с проверкой, если ваш сервер когда-либо работал).

Тем не менее, вы можете узнать текущий используемый ключ машины, посмотрев в реестр

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

(если вы используете IIS6). Если вы будете осторожны, вы сможете установить новую коробку с тем же ключом, перенастроить ее и ничего не делать неправильно. Но это знаменитые последние слова;)

2 голосов
/ 20 августа 2009

Как правило, такая миграция будет полной остановкой. Большинство сайтов объявляют об этом и выкладывают страницу временного отключения во время переключения. Кроме того, я полагаю, что будет время, когда ни одна из машин не будет доступна, поэтому независимо от ключа машины и состояния просмотра запросы не будут выполнены. Я бы порекомендовал вам вызвать полный сбой. Это также позволит вам протестировать новый сервер до его запуска.

В качестве альтернативы, вы можете присвоить новому компьютеру новые IP-адреса и медленно форсировать новый трафик на новый, в то время как существующие соединения останутся на старом. Для этого потребуется какое-то устройство (маршрутизатор, коммутатор контента и т. Д.) Для управления этим. Не уверен, что ваш сервер находится за таким устройством.

Но вернемся к вашему вопросу, да, вы можете вручную установить машинный ключ. Это в machine.config. Возьмите этот раздел со старого компьютера и скопируйте его:

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

Обычно находится здесь: C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ CONFIG \ machine.config

Вот статья об использовании того же ключа машины .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...