X509Certificate2 找不到文件

  |   0 评论   |   95 浏览

    在处理签名文件时,本地开发和部署到本地IIS中,都可以正常读取文件并操作。

    下面是代码:

    string privateKeyPath = ConfigurationManager.AppSettings[“privatekey”].ToString();
    X509Certificate2 cert = new X509Certificate2(privateKeyPath, PrivateKeyPwd, X509KeyStorageFlags.Exportable);
    RSACryptoServiceProvider rsa = (RSACryptoServiceProvider)cert.PrivateKey;
    byte[] buffer = Encoding.UTF8.GetBytes(content);
    byte[] sign = rsa.SignData(buffer, new SHA1CryptoServiceProvider());
    return Convert.ToBase64String(sign);

    服务器环境是Windows Server 2012 R2 ,IIS 8.5.9600.16384

    本地环境是Windows 10 ,IIS 10.0.14393.0

    本机运行正常的代码,放到服务器上,一直提示“系统找不到指定的路径。”

    证书的路径和访问权限,都是正确无误。但是服务器上面是设置过虚拟目录(也就是在网站下面添加过应用程序)。

    最初以为是应用程序权限问题,甚至提升到各种文件权限到Everyone的所有权,都不行。

    最后发现是IIS配置问题,解决方案如下:

    IIS中找到部署网站的应用程序池(如果是添加的应用程序,也一样),然后右键高级设置,找到“加载用户配置文件”改为TRUE即可。

    本地环境默认的就是TRUE,所以在本地开发和部署IIS都是OK的。服务器上面的IIS默认的是FALSE,所以会报错

    评论

    发表评论

    validate