2010-02-19 1 views
3

Я переношу нашу среду хостинга в совершенно новый центр обработки данных с новыми ящиками, аппаратным и программным обеспечением ... вся сделка.Миграция MachineKey от iis6 на старом сервере до iis7 на новом сервере

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

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

Мой вопрос: где я могу найти значение MachineKey (на сервере IIS 6 win2k3), чтобы использовать это значение для его статического определения на новых серверах? Я остановил файл machine.config, но он не указывает ключ, он определяет только конфигурацию, где ключ может быть определен. Это не в моем web.config для приложения или в другом месте.

Я нашел this great article на некоторых проблемах MachineKey и Web Garden (которые могли бы объяснить некоторые другие ошибки, которые я испытывал в отношении machineKey).

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

Любая помощь приветствуется ...

ответ

1

Вы видели this?

Похоже, вы можете получить его, глядя на

  • System.Web.Configuration.MachineKeySecion.DecryptionKeyInternal и
  • System.Web.Configuration.MachineKeySecion.ValidationKeyInternal

Это внутреннее однако, так что вам придется использовать отражение.

+0

Это здорово! однако эта статья находится в C# 3.5, и я застрял в версии 2.0. Я пытаюсь использовать эти внутренние свойства, используя рефлексию, и мне пока не повезло. – MaseBase

+0

Это был правильный ответ для меня, но у меня нет галочки, чтобы отметить это правильно! Мне потребовалось некоторое время, чтобы получить код отражения с самого момента, когда ссылка была в .NET 3.5, и я был в .NET 2.0 - не слишком много размышляйте, но это решило мою проблему! – MaseBase

0

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

  1. C: \ Documents и Settings \ All Users \ Application Data \ Microsoft \ Crypto \ RSA \ MachineKeys
  2. http://support.microsoft.com/kb/312906. Вы не должны сохранять его как AutoGenerate, иначе машинные клавиши будут автогенерироваться на всех машинах, и, следовательно, это будет иначе.

НТН, Рахул

+1

Да, я не хочу сохранять его как автогенератор, но я не хочу начинать с нового ключа. То, что я хочу сделать, это получить текущий автоматически сгенерированный ключ, поэтому я могу установить его и обеспечить доступ к моим файлам cookie и зашифрованным данным. – MaseBase

+0

Я не думаю, что это стоит боль MaseBase. Вы должны установить его на всех машинах, чтобы заставить его работать. AFAIK, текущий ключ автогенерации изменяется при перезагрузке IIS/машины. –

Смежные вопросы