Криптографическое исключение Virto Commerce в Azure

После борьбы за успешное развертывание виртуальной коммерции в Azure и после активации подтверждения по электронной почте для новых пользователей я продолжаю сталкиваться с криптографическим исключением:

The data protection operation was unsuccessful. This may have been caused by not having the user profile loaded for the current thread's user context, which may be the case when the thread is impersonating.

at System.Security.Cryptography.ProtectedData.Protect(Byte[] userData, Byte[] optionalEntropy, DataProtectionScope scope)
   at VirtoCommerce.Web.Client.Providers.CookieTempDataProvider.Protect(Byte[] data) in c:\Users\Tiago\Documents\xpmarketplace\src\Extensions\Client\CommerceWebClient\Providers\CookieTempDataProvider.cs:line 91
   at VirtoCommerce.Web.Client.Providers.CookieTempDataProvider.SaveTempData(ControllerContext controllerContext, IDictionary`2 values) in c:\Users\Tiago\Documents\xpmarketplace\src\Extensions\Client\CommerceWebClient\Providers\CookieTempDataProvider.cs:line 28
   at System.Web.Mvc.TempDataDictionary.Save(ControllerContext controllerContext, ITempDataProvider tempDataProvider)
   at System.Web.Mvc.Controller.PossiblySaveTempData()
   at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)
   at System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult, Controller controller)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End()
   at System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult)
   at System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult)
   at System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End()
   at System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)
   at System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result)
   at System.Web.HttpApplication.CallHandlerExecutionStep.OnAsyncHandlerCompletion(IAsyncResult ar)

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

Это один из источников https://social.msdn.microsoft.com/Forums/vstudio/en-US/ad1f7367-7727-4b1a-a190-840ff4ed5709/adfs-20-sso-the-data.-операция-защиты-была-неудачной?forum=Geneva

РЕДАКТИРОВАТЬ: Исключение возникает, когда система генерирует какой-либо токен (активация учетной записи, сброс пароля).


person Joel Brito    schedule 18.03.2015    source источник
comment
Какую версию вы используете? Я полагаю, что это было исправлено в последней версии (1.13).   -  person Woland    schedule 24.03.2015
comment
Это последняя версия из основного репозитория github, версия 1.13.   -  person Joel Brito    schedule 24.03.2015
comment
я смог воспроизвести проблему и скоро предоставлю исправление   -  person Woland    schedule 24.03.2015


Ответы (1)


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

person Woland    schedule 24.03.2015
comment
Спасибо за ответ и за исправление. Отдельно хотелось бы отметить, пытались ли вы снова развернуть все в облаке Azure? Это работало нормально? - person Joel Brito; 26.03.2015
comment
Да, мы обновили демо, и оно работает. Система использовала MachineKey везде, кроме одного класса, должно быть, как-то пропустила его. - person Woland; 27.03.2015
comment
Я получаю сообщение об ошибке 404, но, похоже, это не связано с этим вопросом... puu.sh /gRHYX/9da9882a17.png Спасибо. - person Joel Brito; 27.03.2015
comment
Можете ли вы создать еще один тикет с более подробным описанием исключения? Похоже, он не может найти веб-сайт, что может быть вызвано тем, что магазины не настроены на серверной части. - person Woland; 30.03.2015
comment
Неверное значение для DefaultStore в Web.config. Значение было установлено на имя магазина, а не на идентификатор магазина. Теперь это решено. Спасибо - person Joel Brito; 31.03.2015