程序发布前,跑在vs上是没问题的,当发布后,程序就报错了。通过系统日志找到了错误所在:证书调用时出现了异常。原因是:在IIS上调用证书是需要配置的,具体配置如下:
一. 确保证书已安装
1. 点击 [开始] -> [运行] -> 键入[mmc] 进入“控制台”界面 -> 选择[文件] -> [添加/删除管理单元]
2. 选择[证书] -> [计算机账户] -> [下一步] -> [完成]
3. 选择[个人] -> [证书] -> [所有任务] -> [导入] 。如果证书已存在则跳过此步骤,不用做导入操作。
二. 修改IIS上对应项目的程序池标识
1. 打开IIS -> 选择[应用程序池] -> 选中对应的项目 -> 选择右侧的[高级设置]
3. 将 ApplicationPoolIdentity 修改为 NetworkService
三. 对证书进行授权
1. 下载并安装 winhttpcertcfg.exe 工具(Windows HTTP Services Certificate Configuration Tool)。安装完成后该工具在C:\Program Files (x86)\Windows Resource Kits\Tools 或者C:\Program Files\Windows Resource Kits\Tools 文件夹下。
2. 打开[开始] -> [运行] ->键入[cmd]
3. 在控制台中输入指令 cdC:\Program Files (x86)\Windows Resource Kits\Tools 按[回车]键,进入工具所在目录
4. 进入指定目录后,输入指令 winhttpcertcfg -g -c LOCAL_MACHINE\MY -s "证书名称" -a "IIS程序池标识"
5. 按[回车]键,执行指令
成功后结果如下图:
关于指令的一点说明:
winhttpcertcfg -g -c LOCAL_MACHINE\MY -s "证书名称" -a "IIS程序池标识"
-g 代表授权
-c 代表证书在计算机上安装存储位置
-a "IIS程序池标识" (上面我们将iis程序池标识改成了NetworkService) 所以是 -a "NetworkService"
参考博文:记ASP.NET 使用 X509Certificate2 出现的一系列问题
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。