C# 仅提供程序集文件中的路径
这是我的问题;目前,我正在使用位于本地计算机上的证书密钥文件,该文件是发送webrequest所必需的。这个项目将与其他人一起使用,我不舒服发送我的证书给他们 我正在尝试使用buildaction-Content将该文件包含在构建时的项目中。但是,我找不到此文件的位置。我也使用嵌入式资源作为构建操作,但我遇到了问题,因为我只能在流中加载文件,这不是我要寻找的,因为对象:C# 仅提供程序集文件中的路径,c#,.net,web-services,build,C#,.net,Web Services,Build,这是我的问题;目前,我正在使用位于本地计算机上的证书密钥文件,该文件是发送webrequest所必需的。这个项目将与其他人一起使用,我不舒服发送我的证书给他们 我正在尝试使用buildaction-Content将该文件包含在构建时的项目中。但是,我找不到此文件的位置。我也使用嵌入式资源作为构建操作,但我遇到了问题,因为我只能在流中加载文件,这不是我要寻找的,因为对象: X509Certificate2 certificate = new X509Certificate2(certName,
X509Certificate2 certificate = new X509Certificate2(certName, password);
仅使用证书文件的位置,不需要打开它
有谁能提供一个解决方案,让我能够将文件构建到项目中,并且只引用上面对象的路径
谢谢,您可以通过提供嵌入式resourceName获得如下证书:
using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName))
{
Byte[] assemblyData = new Byte[stream.Length];
stream.Read(assemblyData, 0, assemblyData.Length);
var cert = new X509Certificate2();
cert.Import(assemblyData);
}
但是,正如@Alex.K在评论中所说,由于“资源”非常容易访问,因此它只会略微提高安全性,您将实现的唯一一件事是该文件不容易被看到。那么您想对应用程序的最终用户隐藏客户端证书吗?你可以使它稍微困难一些,但没有防弹的方法。如果你想让你的客户端应用程序调用你创建的web服务,然后用证书调用真正的web服务-这样他们根本不需要它。成功了!非常感谢。是的,我理解,因为这将在内部使用,我希望尽可能地消除可见性将有所帮助。