'PrivateKey' 没有 'CreateFromFile' 的定义
'PrivateKey' does not have a definition for 'CreateFromFile'
我正在尝试在我的应用程序中实施一个反映答案的解决方案 in this post
我有一个类似的场景,我在 Ubuntu 服务器上有一个基于 HttpListener
和 Grapevine
的应用程序 运行,我需要使用 [=15] =] 使用 Mono
并且我正在尝试创建并包含相关密钥以允许 HTTPS
我遇到的问题是解决方案的最后一行,
key = PrivateKey.CreateFromFile (pvk_file).RSA;
当我尝试相同时 Visual Studio 显示 error/text 突出显示的红色,'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
}
}
您有命名冲突 - 换句话说,还有另一个名为 PrivateKey
的 class 没有您需要的方法。 A quick Google hunt 表示正确的 class 在 Mono.Security.Authenticode
命名空间中。所以你需要引用完整路径:
Mono.Security.Authenticode.PrivateKey.CreateFromFile(...)
如果您还没有 Mono.Security
包,您可能还需要添加它。
我正在尝试在我的应用程序中实施一个反映答案的解决方案 in this post
我有一个类似的场景,我在 Ubuntu 服务器上有一个基于 HttpListener
和 Grapevine
的应用程序 运行,我需要使用 [=15] =] 使用 Mono
并且我正在尝试创建并包含相关密钥以允许 HTTPS
我遇到的问题是解决方案的最后一行,
key = PrivateKey.CreateFromFile (pvk_file).RSA;
当我尝试相同时 Visual Studio 显示 error/text 突出显示的红色,'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
}
}
您有命名冲突 - 换句话说,还有另一个名为 PrivateKey
的 class 没有您需要的方法。 A quick Google hunt 表示正确的 class 在 Mono.Security.Authenticode
命名空间中。所以你需要引用完整路径:
Mono.Security.Authenticode.PrivateKey.CreateFromFile(...)
如果您还没有 Mono.Security
包,您可能还需要添加它。