DEFAULT PROJECT IN VS 2017 我在vs 2017社区创建了一个新的Asp.net Core Web应用程序并在FTP托管上发布,但是当我提交表单(登录或用户创建)时,我收到此错误:
Microsoft.AspNetCore.Antiforgery.Internal.DefaultAntiforgery [7] 反序列化令牌时抛出异常。 System.InvalidOperationException:防伪令牌不可能 解密。 ---> System.Security.Cryptography.CryptographicException: 密钥环中找不到密钥{...}。
我需要做些什么才能让它发挥作用?感谢。
答案 0 :(得分:3)
可能您的问题是您已禁用禁用 IIS 中的用户配置文件
[WRN] Error unprotecting the session cookie.
System.Security.Cryptography.CryptographicException: The key {e47d051f-d492-4df7-8781-31d884833ec6} was not found in the key ring.
和防伪
[ERR] An exception was thrown while deserializing the token.
Microsoft.AspNetCore.Antiforgery.AntiforgeryValidationException: The antiforgery token could not be decrypted.
---> System.Security.Cryptography.CryptographicException: The key {e47d051f-d492-4df7-8781-31d884833ec6} was not found in the key ring.
很可能会神奇地消失。
答案 1 :(得分:1)
如果将IIS应用程序池设置为使用ApplicationPoolIdentity,则需要确保将IIS应用程序池的“加载用户配置文件”设置为“真”。
- 如果用户配置文件可用,则密钥将保留在%LOCALAPPDATA%\ ASP.NET \ DataProtection-Keys文件夹中。如果操作 系统是Windows,则使用DPAPI对密钥进行静态加密。
答案 2 :(得分:1)
如果您的托管环境正在为该应用程序使用多个实例,则可能是问题的原因。 解决此问题的最简单方法是将其缩减为一个实例,并最大数量地增加实例1。
这是用于身份或登录API的一面。 当您的应用程序登录到实例时。 并与另一个实例一起检查令牌。