2016-08-17 7 views
0

Я пытаюсь внедрить решение в мое приложение, зеркало ответа in this post«PrivateKey» не имеет определения «CreateFromFile»

У меня есть подобный сценарий, где у меня есть HttpListener и Grapevine приложение работает на сервер Ubuntu, что мне нужно, чтобы получить работу с помощью HTTPSMono, и я пытаюсь создать и включить соответствующие ключи, чтобы HTTPS

проблемы я имею в последней строке решения,

key = PrivateKey.CreateFromFile (pvk_file).RSA;

Когда я пытаюсь то же Visual Studio показывает ошибку/текст выделен красным цвета, 'PrivateKey' does not have a definition for 'CreateFromFile'

я использую неправильные библиотеки или что-то еще проблема с самим моим кодом?

My code, cut down к соответствующему методу.

using System; 
using System.IO; 
using System.Security.Cryptography.X509Certificates; 
using System.Threading; 
using java.security; 

public class ConfigureCertificates 
    { 
     private readonly string _dirName; 
     private readonly string _path; 
     private readonly string _port; 
     private readonly string _certFile; 
     public ConfigureCertificates(string port) 
     { 
      _dirName = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 
      _path = Path.Combine(_dirName, ".mono"); 
      _path = Path.Combine(_path, "httplistener"); 
      _port = port; 
      _certFile = Path.Combine(_path, String.Format("{0}.cer", _port)); 
     } 

     public void SetUpCerts() 
     { 
      if (!File.Exists(_certFile)) 
       throw new Exception("Certificate file not found"); 

      string pvkFile = Path.Combine(_path, String.Format("{0}.pvk", _port)); 

      if (!File.Exists(pvkFile)) 
       throw new Exception("Private key not found"); 

      var cert = new X509Certificate2(_certFile); 
      var key = PrivateKey.CreateFromFile(pvkFile).RSA; // Error occurs here 
     } 
    } 
+1

Попробуйте полное пространство имен, возможно, здесь есть столкновение имен классов. 'Mono.Security.Authenticode.PrivateKey.CreateFromFile()' – DavidG

+0

Это было пятно на. Благодарю. Просто нужно было добавить «Mono.Security» из Nuget –

ответ

1

У вас есть именование столкновение - другие слова, есть еще один класс называется PrivateKey, который не имеет метода, который требуется. A quick Google hunt указывает, что правильный класс находится в пространстве имен Mono.Security.Authenticode. Так что вам нужно будет ссылаться на полный путь:

Mono.Security.Authenticode.PrivateKey.CreateFromFile(...) 

Вам также может понадобиться добавить Mono.Security пакет, если вы уже не имеете его.