我正在尝试在我的应用程序中实现一个反映答案in this post
的解决方案我有类似的情况,我在Ubuntu服务器上运行基于HttpListener
和Grapevine
的应用程序,我需要使用HTTPS
使用Mono
和我我正在尝试创建并包含相关键以允许HTTPS
我遇到的问题是解决方案的最后一行,
key = PrivateKey.CreateFromFile (pvk_file).RSA;
当我尝试相同的Visual Studio时,显示错误/文本突出显示为红色'PrivateKey' does not have a definition for 'CreateFromFile'
我使用错误的库还是我的代码本身的其他问题?
我的代码,缩减为相关方法。
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
}
}
答案 0 :(得分:1)
您有一个命名冲突 - 换句话说,还有另一个名为PrivateKey
的类没有您需要的方法。 A quick Google hunt表示正确的类位于Mono.Security.Authenticode
命名空间中。所以你需要引用完整的路径:
Mono.Security.Authenticode.PrivateKey.CreateFromFile(...)
如果您还没有Mono.Security
套餐,则可能还需要添加它。