c# - 如何读取我的网络服务中的 .p12 文件

标签 c# asp.net .net web-services

我有一个问题。我有一个网络服务,并且有一个“.p12”文件,我需要在我的网络服务中读取该文件来处理一些指令。读取“.p12”文件是必要的(该文件[已认证]允许我在我的域[google电子邮件服务]中创建用户)

嗯,在我的机器中,Web 服务运行良好,但是当我在服务器中发布 Web 服务时,它不起作用。我已将文件 (.p12) 复制到 Web 服务的主文件夹中、bin 文件夹中、服务器的“C”单元中,但它不起作用。

这是读取文件的行(我使用的是 C#):

var certificate = new X509Certificate2(@"C:\\nameOfMyFile.p12", "notasecret", X509KeyStorageFlags.Exportable);

它向我显示一个错误:服务器无法处理请求。 ---> 内部错误。

之后,我尝试了这个:

string hpath = HttpContext.Current.Server.MapPath(".");
hpath = hpath + "\\nameOfMyFile.p12";
var certificate = new X509Certificate2(System.Web.HttpContext.Current.Server.MapPath(hpath, "notasecret", X509KeyStorageFlags.Exportable);

它向我显示了同样的错误:服务器无法处理请求。 ---> 内部错误。

之后,我只写文件名:

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

它向我显示此错误:服务器无法处理请求。 --->系统找不到指定的文件

那么,我是否需要为文件、文件夹、Web 服务分配一项特殊权限?读取这样的文件 (.p12) 的最佳方法是什么?

提前致谢。

最佳答案

老实说,我不知道这是否是最好的方法,但它适用于我的情况。

添加这些命名空间:

using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;

我使用这个代码:

X509Certificate2 certificate = new X509Certificate2(@"file.p12", "password", X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.Exportable);

最后我将“.p12”文件复制到 Windows 的“inetsrv”文件夹中。

关于c# - 如何读取我的网络服务中的 .p12 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22384377/

相关文章:

javascript - Angular.js 的 ASP.NET 捆绑和缩小错误

c# - c# asp.net 3.5 中图像按钮上的文本

asp.net - 认证模式 ="Forms"错误

.net - 如何在底层 .NET 流之上创建双向加密流?

.net - 是否存在支持 .Net Core 的任何 NHibernate 版本?

C# 多线程代理检查器

c# - Oracle.DataAccess.Client.OracleException 在 Connection.Open()

c# - 从 MySQL Select 向 C# 列表添加多列

c# - EasyNetQ - 从现有队列接收

.net - 使用PowerShell处理事件?