zoukankan      html  css  js  c++  java
  • 解决WCF部署到IIS出现“证书必须具有能够进行密钥交换的私钥,该进程必须具有访问私钥的权限”

    访问WCF服务时,出现异常详细信息: System.Security.Cryptography.CryptographicException: 密钥集不存在。ArgumentException: 证书“CN=MyServerCert”必须具有能够进行密钥交换的私钥。该进程必须具有访问私钥的权限。这个问题是因为 WCF 所使用的帐户(NETWORK SERVICE/ASPNET)对证书私钥文件的读访问权限造成的。

    造成上面的错误主要是Network Service(Server)用户没有访问证书权限,要解决该错误, 只需要给相应的账号分配权限即可,这里IIS访问证书密钥的权限可以通过WinHttpCertCfg.exe来处理,只需要通过命令行执行该程序即可,如下所示。

    winhttpcertcfg -g -c LOCAL_MACHINEMy -s MyServerCert -a "NETWORK SERVICE" 

    运行命令后,在运行WCF服务,一切OK了

    其它解决办法可参照:WCF部署:让IIS有权限访问证书文件

    -------------------------------------------------------------------------------------------------------------------------------

    如果设置了访问权限,还出现上面的错误,那么您需要设置一下应用程序池,操作如下:

    分别进入Classic .NET AppPool 和 DefaultAppPool 高级设置,将进程模型标识设置为 NetworkService 

  • 相关阅读:
    Android四大基本组件介绍与生命周期
    论Android产品高效开发之路
    android工程目录分析
    android推送思路
    android类库
    Android实现应用下载并自动安装apk包
    自定义 Android 对话框 (AlertDialog) 的样式
    Android adb shell 命令详解
    Complexities
    Combination Sum II
  • 原文地址:https://www.cnblogs.com/ShaYeBlog/p/4072086.html
Copyright © 2011-2022 走看看