gpt4 book ai didi

c# - IIS 中的 RSA 容器返回 "Object already exists"

转载 作者:行者123 更新时间:2023-12-03 13:41:51 25 4
gpt4 key购买 nike

当我将我的工作 ASP.NET CORE 2.2 应用程序部署到我的本地 IIS 10 时,它给了我异常

Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException: Object already exists
at Internal.NativeCrypto.CapiHelper.CreateCSP(CspParameters parameters, Boolean randomKeyContainer, SafeProvHandle& safeProvHandle)
at Internal.NativeCrypto.CapiHelper.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer)
at System.Security.Cryptography.RSACryptoServiceProvider.get_SafeProvHandle()
at System.Security.Cryptography.RSACryptoServiceProvider.get_SafeKeyHandle()
at System.Security.Cryptography.RSACryptoServiceProvider..ctor(Int32 keySize, CspParameters parameters, Boolean useDefaultKeySize)
at System.Security.Cryptography.RSACryptoServiceProvider..ctor(CspParameters parameters)
at SamoletBot.Utilities.RSAHelper.GetRSAFromString(String pemstr) in D:\Projects\SamoletBot22\SamoletBot\SamoletBot.Utilities\RSAHelper.cs:line 23

这是相关的代码:
   CspParameters cspParameters = new CspParameters();
cspParameters.KeyContainerName = "TheContainer";
cspParameters.Flags = CspProviderFlags.UseMachineKeyStore;

RSACryptoServiceProvider rsaKey;
rsaKey = new RSACryptoServiceProvider(cspParameters);

最后一行抛出异常

阅读后我得出结论,这是由于 RSA 容器权限而发生的,我看到了几个使用它来授予每个用户权限的答案。
CryptoKeyAccessRule rule = new CryptoKeyAccessRule("everyone", CryptoKeyRights.FullControl, AccessControlType.Allow);

问题是 CryptoKeyAccessRule找不到。我已导入 using System.Security.AccessControl .看着 Microsoft docs我看到这仅适用于 .NET Framework。

在 .NET Core 2.2 中创建“共享”RSA 容器的替代方法是什么?

最佳答案

我不确定这会满足您的要求。但以上库不包含在 .net 标准/核心 api 中。
您可能需要切换到下面并执行解决方法
https://www.nuget.org/packages/System.IO.FileSystem.AccessControl/

System.IO.FileSystem.AccessControl

关于c# - IIS 中的 RSA 容器返回 "Object already exists",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57607272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com