错误:尝试访问证书时,“系统找不到指定的文件”。

3

我正在使用Google的BigQuery API,它要求我使用.p12证书。问题是,无论我如何尝试导入我的证书资源,我始终收到相同的错误提示:

系统找不到指定的文件。

我已按以下方式添加该文件:

var certificate = new X509Certificate2(@"key.p12", "notasecret", X509KeyStorageFlags.Exportable);

我是一名C#和Visual Studio的新手。


1
我不想把问题简单化,但是“key.p12”文件是否位于它应该在的位置?(例如,如果您在Visual Studio调试器中执行代码并运行调试版本,则该文件是否位于Solution \ Project \ Debug \文件夹中?编译输出所在的位置。 - Mike Dinescu
@MikeDinescu 我把它拖到了解决方案资源管理器中。我刚刚添加到调试文件夹,但仍然遇到同样的问题。 - Fullmetal_Alchemist_Fan
1个回答

4
在属性窗口中(选择p12文件并按f4键),确保“复制到输出目录”设置为“始终复制”。这将确保该文件被复制到最终的EXE位置。
基本上,当你说
new X509Certificate2(@"key.p12", "notasecret", X509KeyStorageFlags.Exportable);

代码期望在EXE(或DLL)运行的位置找到key.p12文件。这与解决方案资源管理器中文件的位置几乎没有关系,更多的是与文件的运行时位置有关。

另外,您可以尝试以下代码片段:

var certificate = new X509Certificate2(@"key.p12", "notasecret", 
                                         X509KeyStorageFlags.MachineKeySet);

这是因为ASP.NET没有加载用户证书存储,而机器存储已经加载了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接