Я использую angularjs и Web API. Чтобы аутентифицировать пользователя, я использую FormAuthenticationTicket (я просто создаю билет с пользовательскими данными, зашифровываю его, а затем возвращаю к клиенту). Когда клиент отправляет запрос, он добавляет этот зашифрованный файл cookie в заголовок своего запроса.ошибка произошла во время криптографической операции .net framework 4.5.1
На удаленном сервере я дешифрую билет и проверяю, является ли этот пользователь законным. На локальном хосте он отлично работает. на сервере У меня есть ошибка, и после очень короткого времени пользователь не идентифицируется. после многих отладок, я заметил, что иногда, когда сервер пытается расшифровать билет, он получает исключение: «ошибка произошла во время криптографической операции»
Я ошибся в этой ошибке, и из того, что я понял, ошибка связана с тем, что сервер пытается расшифровать билет другим машинным ключом.
Возможно, установка машинного ключа в web.config решит проблему, но все статьи, которые я нашел, говорили о ранних версиях рамок .net (я использую 4.5.1).
Это когда я получаю сообщение об ошибке:
FormsAuthenticationTicket fat = FormsAuthentication.Decrypt(enc_ticket);
Это моя web.config:
<configuration><appSettings></appSettings>
<system.web> <compilation debug="true" targetFramework="4.5.1">
<assemblies>
<add assembly="System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
</assemblies>
</compilation>
<httpRuntime targetFramework="4.5.1" />
<customErrors mode="Off"/>
<trust level="Full" />
</system.web>
<system.webServer>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
</configuration>