Asp.Net Core 1.1密钥环中没有找到密钥

时间:2017-06-17 08:11:36

标签: asp.net asp.net-core antiforgerytoken

DEFAULT PROJECT IN VS 2017 我在vs 2017社区创建了一个新的Asp.net Core Web应用程序并在FTP托管上发布,但是当我提交表单(登录或用户创建)时,我收到此错误:

  

Microsoft.AspNetCore.Antiforgery.Internal.DefaultAntiforgery [7]         反序列化令牌时抛出异常。 System.InvalidOperationException:防伪令牌不可能   解密。 ---> System.Security.Cryptography.CryptographicException:   密钥环中找不到密钥{...}。

我需要做些什么才能让它发挥作用?感谢。

3 个答案:

答案 0 :(得分:3)

可能您的问题是您已禁用禁用 IIS 中的用户配置文件

Application pool,更新那个和类似的错误

[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应用程序池的“加载用户配置文件”设置为“真”。

请参阅:https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/configuration/default-settings?view=aspnetcore-2.1

  
      
  1. 如果用户配置文件可用,则密钥将保留在%LOCALAPPDATA%\ ASP.NET \ DataProtection-Keys文件夹中。如果操作   系统是Windows,则使用DPAPI对密钥进行静态加密。
  2.   

答案 2 :(得分:1)

如果您的托管环境正在为该应用程序使用多个实例,则可能是问题的原因。 解决此问题的最简单方法是将其缩减为一个实例,并最大数量地增加实例1。

这是用于身份或登录API的一面。 当您的应用程序登录到实例时。 并与另一个实例一起检查令牌。