2010-06-16 3 views
0

Ce code thows ci-dessous l'erreur suivante: System.Security.Cryptography.CryptographicException « La poignée est invalide »constructeur DSACryptoServiceProvider lance CryptographicException

CspParameters CSPParam = new System.Security.Cryptography.CspParameters(13, null, null); 
CSPParam.Flags = CspProviderFlags.UseMachineKeyStore; 
CSPParam.KeyContainerName = "MyKeys"; 

System.Security.Cryptography.DSACryptoServiceProvider r = new System.Security.Cryptography.DSACryptoServiceProvider(CSPParam); //Error occurs here 

Ce code a travaillé sans problème, alors il a commencé à jeter cette erreur . Je ne peux pas penser à tout ce que j'ai changé qui se rapporte à cela. Est-ce que nayone a vu cette erreur? Des idées de quoi essayer?

Répondre

0

Je ne me souviens pas de tout ce qui se passe dans les coulisses de CAPI, mais si je me souviens il peut être assez douloureux. En utilisant des arguments NULL, vous pourriez obtenir quelque chose appelé (je pense) le conteneur de clé par défaut. Je ne pense pas que vous puissiez compter sur le conteneur de clé par défaut qui n'existe pas avant d'exécuter votre code, et peut-être que s'il existe, vous obtenez une erreur. Vous pouvez tout lire sur la fonction CryptAcquireContext et les différents indicateurs _KEYSET_THIS_THAT pour savoir comment faire cela dans un code non géré. Je n'ai aucune idée s'il y a un wrapper .NET autour de cette horreur ou non.

0

Assurez-vous d'avoir les autorisations appropriées pour effectuer cette action.

information

+0

J'ai regardé un article et fait ce qu'il a dit mais cela n'a pas aidé. – HitLikeAHammer

Questions connexes