2016-05-08 10 views
18

Я запускаю производственный сервер (Windows Server 2012) с веб-сайтом AspNet Mvc Core RC1.AspNet Core, использующий в памяти репо для защиты данных при работе в IIS

Я вижу следующие в журналах:

Neither user profile nor HKLM registry available. Using an ephemeral key repository. Protected data will be unavailable when application exits. 

После проверки исходного кода DataProtection, я отслеживал проблему метода следующий вызов:

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) 

Это, вероятно, возвращение по какой-то причине на сервере. У меня нет специальной настраиваемой конфигурации, и я прочитал docs, поэтому я думал, что дефолт будет работать.

Я думаю, проблема связана с тем, что веб-сайт IIS не работает в определенном контексте пользователя, но я понятия не имею, как подтвердить или исправить это. Мой сайт настроен с собственным пулом.

В результате: результат работы в хранилище памяти для хранения ключей заставляет их перерабатывать всякий раз, когда приложение выходит, что очень раздражает и даже не предназначено для использования в производственных средах.

+0

Действительно ли ваш идентификатор приложения загружен в профиль пользователя? – TGlatzer

+0

@TGlatzer Я думаю, что это проблема (в дополнение к чему-то о контейнерах). Я попробую пропустить с ним, когда у меня будет доступ к серверу. – mrahhal

ответ

11

Профиль пользователя должен быть загружен в конфигурацию IIS.

Открыть IIS, щелкнуть правой кнопкой мыши по пулам приложений, а затем расширенные настройки. И установите для параметра «Загрузить профиль пользователя» значение true. Перезагрузите приложение, и оно должно работать отлично.

+0

На моем IIS он уже был установлен в true, который не исправляет эту ошибку для меня ... –

+0

Но ... whyy ??? Это только начало происходить? Что-то изменилось? Я не понимаю. – ppumkin

3

Ключи защиты данных, используемые приложениями ASP.NET, хранятся в краях реестра, внешних по отношению к приложениям. При запуске приложения в качестве идентификатора AppPool вам необходимо создать куст реестра для для каждого AppPool, используемого в приложении ASP.NET Core.

Для автономных установок IIS вы можете использовать Data Protection PowerShell scriptдля каждого пула приложений, используемого с приложением ASP.NET Core. Ключи сохраняются в реестре.

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

В сценариях веб-фермы приложение может быть настроено на использование UNC-пути для хранения своего ключевого кольца защиты данных. По умолчанию ключи защиты данных не шифруются. Вы можете развернуть сертификат x509 для каждой машины для шифрования брелка.

Смотрите official ASP.NET Core docs для получения дополнительной информации

+0

Это правильный ответ, в основном вам нужно сообщить IIS, где хранить ключ, чтобы он мог повторно подключаться между сеансами. Просто ответил на аналогичный вопрос https://stackoverflow.com/questions/46225867/is-it-possible-to-persist-cookies-between-visual-studio-debug-sessions/46657239#46657239 –

0

Посмотрите на this from the DataProtection Git repository

Короче говоря, есть ошибка в IIS, которые никогда не могут быть исправлены, что предотвратить правильную настройку реестра для ключей DataProtection. Существует powershell script, чтобы правильно настроить реестр правильно, чтобы он работал в AspNet Core. После запуска сценария для каждого пула приложений, который вы используете для приложений AspNet Core, эти приложения будут работать по назначению.

+0

Что еще я могу сделать если я нахожусь в среде размещения, где права доступа очень ограничены. Я не могу запустить сценарий powershell или изменить настройки пула приложений? – kliszaq

+0

Вы находитесь в сложной ситуации ... Я думаю, вы должны проверить, можно ли найти кого-то, у кого есть доступ, чтобы сделать это. Как правило, вы должны иметь возможность найти кого-то/процедуру для изменения конфигураций сервера, когда это оправдано какой-либо бумажной работой. Удачи! – Yepeekai

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

  • Нет связанных вопросов^_^