IsolateApps вызывает указанный ключ дешифрования имеет недопустимые шестнадцатеричные символы

Я работаю над сайтом MVC 4, который использует аутентификацию. На сайте требуется указать значения машинного ключа. Я сделал это через интерфейс IIS, отменив выбор "автоматически генерировать во время выполнения", сгенерировал значения ключей и выбрал "сгенерировать уникальный ключ для каждого приложения"

Вкладка web.config выглядит примерно так:

<machineKey decryption="DES" decryptionKey="{hex-key value},IsolateApps" 
    validationKey="{hex-key value},IsolateApps" />;

В то время как это, похоже, отлично работает в другом веб-проекте, это приводит к тому, что на дебютной машине, над которой я работаю сейчас (в IIS-Express и IIS 7.5), появляется ошибка "Десятичный ключ с указанными ошибками с недопустимыми шестнадцатеричными символами".

Удаление ",IsolateApps" из ключевых значений решает проблему, но поскольку мне нужна эта опция в процессе производства, я не хочу ее удалять сейчас, только чтобы иметь эту проблему при развертывании.

Что дает? Блок разработчика - это поле SQL 2008 R2 с .net 2.0 и .net 4.0.

Ответ 1

Модификатор IsolateApps заставляет ASP.NET генерировать уникальный ключ для каждого приложения на вашем сервере. Это применимо только в том случае, если вы получаете ASP.NET для автоматического создания ключей во время выполнения.

Если вы не получаете ASP.NET для автоматического создания ключей и вместо этого указываете ключи с помощью decryptionKey="{hex-key value}", то способ заставить ASP.NET использовать другой ключ для каждого приложения - просто указать другой ключ в каждом приложении Web.config.

В графическом интерфейсе конфигурации IIS вы можете создать Web.config с явным ключом вместе с модификатором IsolateApps, что является недопустимым, и, на мой взгляд, это ошибка в графическом интерфейсе конфигурации.

Ответ 2

Вы можете исправить проблему, добавив следующее к элементу machineKey (compatMode = "Framework20SP1" ) в web.config См. ссылку

Ответ 3

Это можно устранить, добавив строку machineKey в ваш web.config и указав свои ключи, как показано ниже (используйте свой собственный ключ, хотя, конечно, это легко можно угадать):

<configuration>
 <system.web>
  <machineKey decryptionKey="0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0" validationKey="0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF00123456789ABCDEF0123456789ABCDEF0123456789ABCDEF00123456789ABCDEF0123456789ABCD" />
 </system.web>
</configuration>