仅提供程序集文件中的路径

时间:2017-11-21 16:58:01

标签: c# .net web-services build

这是我的问题;目前,我正在使用位于我的计算机本地的证书密钥文件,该文件是发送网络请求所必需的。该项目将在其他项目中使用,我不方便将证书发送给他们。

我尝试使用Build Action - Content在构建时将文件包含在项目中。虽然,我无法找到此文件的位置。我还使用了#34; Embedded Resource"作为一个Build Action但我遇到了问题,因为我只能在流中加载文件,这不是我正在寻找的东西,因为对象:

 X509Certificate2 certificate = new X509Certificate2(certName, password);

仅使用证书文件的位置,不需要打开它。

有人可以提供一个解决方案,我可以将文件构建到项目中,并仅引用其上述对象的路径吗?

谢谢,

1 个答案:

答案 0 :(得分:1)

您可以通过提供嵌入式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在评论中所说,它只会略微提高安全性,因为“资源”非常容易获取,你唯一能做到的就是文件不会很容易看到。