RSACryptoServiceProvider CryptographicException-System kann die unter ASP.NET angegebene Datei nicht finden

Ich habe eine Anwendung, die den RSACryptoServiceProvider verwendet, um einige Daten mit einem bekannten privaten Schlüssel (in einer Variablen gespeichert) zu entschlüsseln.

Wenn der IIS-Anwendungspool für die Verwendung des Netzwerkdienstes konfiguriert ist, funktioniert alles einwandfrei.

Wenn wir den IIS-Anwendungspool so konfigurieren, dass der Code unter einer anderen Identität ausgeführt wird, erhalten wir jedoch Folgendes:

System.Security.Cryptography.CryptographicException: The system cannot find the file specified.

   at System.Security.Cryptography.Utils.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer)
   at System.Security.Cryptography.RSACryptoServiceProvider.ImportParameters(RSAParameters parameters)
   at System.Security.Cryptography.RSA.FromXmlString(String xmlString)

Der Code sieht ungefähr so ​​aus:

byte[] input; 
byte[] output; 
string private_key_xml; 

var provider = new System.Cryptography.RSACryptoServiceProvider(this.m_key.Key_Size);
provider.FromXmlString(private_key_xml); // Fails Here when Application Pool Identity != Network Service

ouput = provider.Decrypt(input, false); // False = Use PKCS#1 v1.5 Padding

Es gibt Ressourcen, die versuchen, darauf zu antworten, indem Sie dem Benutzer Lesezugriff auf den Computerschlüsselspeicher gewähren. Es gibt jedoch keine endgültige Antwort, um dieses Problem zu beheben.

Umgebung: IIS 6.0, Windows Server 2003 R2, .NET 3.5 SP1

Antworten auf die Frage(4)

Ihre Antwort auf die Frage