Как мне...использовать x509certificate2 для получения privatekey вызывает cryptographicexception " недопустимый тип поставщика указан”
каждый,
Я разрабатываю веб-приложение, которое использует X509Certificate2 для получения закрытого ключа из файла сертификации. Фрагмент кода выглядит следующим образом:
public static RSACryptoServiceProvider GetSignProviderFromPfx() { var strFileName = "c:\cer\mycerfile.pfx"; var strPassword = "000000"; X509Certificate2 pc = new X509Certificate2(strFileName, strPassword, X509KeyStorageFlags.MachineKeySet); var ThePivateKey = pc.PrivateKey; return (RSACryptoServiceProvider)ThePivateKey; }
Но заявление pc. Privatekey вызывает систему.Безопасность.Криптография.CryptographicException "указан недопустимый тип поставщика". Я уверен, что файл сертификации не имеет никаких проблем, у него действительно есть закрытый ключ. И свойство pc.HasPrivateKey также возвращает true.
Тестовая среда-VS2013, окно 7.
Кто-нибудь может помочь?
Спасибо.
Что я уже пробовал:
Я также попытался следовать:
a. я отладил его в VS2013 с помощью iis express, проблема возникла.
б) я отладил его на другом компьютере с той же средой, что и у меня, и проблема тоже возникла.
c. я опубликовал приложение на сервере с iis, работающем на Windows Web Server 2008 R2, оно работало нормально.
d. я опубликовал приложение на веб-сайте widows azure, оно также отлично работало.
Поэтому я думаю, что фрагмент кода не имеет никаких проблем. Ключевая причина возникновения исключения заключается в том, что может возникнуть некоторая проблема с запущенной средой. Я проверил и сравнил чтение/запись прямо в файле сертификации в разных средах, все они одинаковы.