Ngày tốtSystem.Security.Cryptography.CryptographicException: Keyset không tồn tại trong Visual studio
Tôi đang gặp vấn đề nghiêm trọng khi ấn định khóa riêng do lỗi này.
System.Security.Cryptography.CryptographicException: Keyset does not exist
var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);
var col = store.Certificates.Find(X509FindType.FindBySerialNumber, "00873476DC47C5BB614EA96F2A9CE744A6", false);
var cert = col[0];
var xmlUnSignedSaml = new XmlDocument();
xmlUnSignedSaml.LoadXml(assertion);
xmlUnSignedSaml.PreserveWhitespace = true;
SignedXml signedXml = new SignedXml(xmlUnSignedSaml);
signedXml.SigningKey = cert.PrivateKey; //<<<--- Exception thrown.
Tôi đã xác minh những điều sau đây:
- Giấy chứng nhận HAS một khóa riêng.
- Đọc Quyền trên chứng chỉ được cấp cho IUSR, DỊCH VỤ MẠNG, DỊCH VỤ ĐỊA PHƯƠNG và bối cảnh người dùng cục bộ trên Bảng điều khiển MMC. Chứng chỉ nằm trong thư mục localMachine - Personal
- Các quyền Đọc tương tự được cung cấp cho thư mục machinekeys tại “C: \ Documents and Settings \ All Users \ Application Data \ Microsoft \ Crypto \ RSA \ MachineKeys”.
Tôi đã kiểm tra các câu trả lời ở trang sau, nhưng tuyệt đối không ai trong số họ làm việc cho tôi:
- Stack Overflow User @blowdart's answer
- MSDN Answer
- Các trang web khác, nhưng điều đó đã phải làm với việc thiết lập IIS và nhận chứng chỉ để làm việc ở đó
Tôi đang chạy ứng dụng từ bên trong Visual Studi o và tại đoạn mã ở trên, nó ném ngoại lệ đang cố gắng đặt SignedXml's SigningKey
Tôi có thể làm gì khác để thiết lập và chạy ứng dụng này? (suy nghĩ lại, tôi cũng đã cố gắng "Mọi người" cho phép trên các CERT và thư mục - thậm chí là ném cùng một ngoại lệ)