C# 失败:Microsoft.AspNetCore.Antiforgery.Internal.DefaultAntiforgery

C# 失败:Microsoft.AspNetCore.Antiforgery.Internal.DefaultAntiforgery,c#,identityserver4,antiforgerytoken,linux-containers,C#,Identityserver4,Antiforgerytoken,Linux Containers,我在一个yml文件中有4个docker容器 数据库容器 Identity Server容器(带有Identity Server的asp.net核心应用程序) Api服务器(asp.net核心应用程序) 客户端(Angular 9应用程序) 在开发windows机器上一切都很好,我将它部署在他的windows服务器上的一个客户端上,我在IIS上托管了所有应用程序,IIS上有3个不同的站点和一个单独的数据库 现在,我想将其部署到linux docker容器上,总体配置运行良好,尽管需要改进(我可以做

我在一个yml文件中有4个docker容器

  • 数据库容器
  • Identity Server容器(带有Identity Server的asp.net核心应用程序)
  • Api服务器(asp.net核心应用程序)
  • 客户端(Angular 9应用程序)
  • 在开发windows机器上一切都很好,我将它部署在他的windows服务器上的一个客户端上,我在IIS上托管了所有应用程序,IIS上有3个不同的站点和一个单独的数据库

    现在,我想将其部署到linux docker容器上,总体配置运行良好,尽管需要改进(我可以做到),但我遇到了以下错误,并且Identity server容器上的docker日志显示了以下错误

    失败:Microsoft.AspNetCore.Antiforgery.Internal.DefaultAntiforgery[7] 反序列化令牌时引发异常。Microsoft.AspNetCore.Antiforgery.AntiforgeryValidationException: 无法解密反伪造令牌。--> System.Security.Cryptography.CryptographyException:密钥 在钥匙圈中未找到{d7972341-6e64-467d-af09-124f5ba3e3a8}。 在 Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.UnprotectCore(字节[]) protectedData,布尔allowOperationsOnRevokedKeys,UnprotectStatus& 状态)在 Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.DangerousUnprotect(字节[]) protectedData,布尔值ignoreRevocationErrors,布尔值& requiresMigration,Boolean&wasrecaded)位于 Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.Unprotect(字节[]) 保护数据)在 Microsoft.AspNetCore.Antiforgery.Internal.DefaultAntiforgeryTokenSerializer.Deserialize(字符串 serializedToken)--内部异常堆栈跟踪的结束---at Microsoft.AspNetCore.Antiforgery.Internal.DefaultAntiforgeryTokenSerializer.Deserialize(字符串 (说)在 Microsoft.AspNetCore.Antiforgery.Internal.DefaultAntiforgery.GetCookieTokenDoesNotThrow(HttpContext httpContext)

    请记住,我将pfx文件用于Identity Server容器上的证书

    我只是不明白这个关键问题是怎么来的,钥匙圈里怎么找不到这个钥匙

    任何帮助或讨论都将不胜感激


    成功后,我想把它部署在数字海洋上

    之后,再通过研究和不同的解决方案,得到一个解决方案似乎有些效果。 这篇文章的解决方案 到目前为止,基迪诺的工作还不错


    我所做的只是重新创建具有所有不同端口绑定的所有容器,是的,它可以工作并生成可由Identity Server解密的正确密钥。

    当提供的防伪令牌不在应用程序的持久授权上时,会出现此错误。 您是实现IPersistedGrant接口还是将该信息保存在内存中?此错误是在发布后还是在重新启动服务器时出现的

    一个常见的原因是将此信息存储在内存中并重新启动服务器

    另一个原因是删除dbo“PersistedGrants”数据库中的信息

    如果已实现IPersistedGrants接口,是否有该数据库的多个实例


    我希望这对你有帮助

    也许这会有所帮助是的,我之前已经讲过了,代码也存在于startup.cs文件中