解決WCF部署到IIS出現「證書必須具備可以進行密鑰交換的私鑰,該進程必須具備訪問私鑰的權限」

訪問WCF服務時,出現異常詳細信息: System.Security.Cryptography.CryptographicException: 密鑰集不存在。ArgumentException: 證書「CN=MyServerCert」必須具備可以進行密鑰交換的私鑰。該進程必須具備訪問私鑰的權限。這個問題是由於 WCF 所使用的賬戶(NETWORK SERVICE/ASPNET)對證書私鑰文件的讀訪問權限形成的。命令行

 

形成上面的錯誤主要是Network Service(Server)用戶沒有訪問證書權限,要解決該錯誤, 只須要給相應的帳號分配權限便可,這裏IIS訪問證書密鑰的權限能夠經過WinHttpCertCfg.exe來處理,只須要經過命令行執行該程序便可,以下所示。blog

 

winhttpcertcfg -g -c LOCAL_MACHINE\My -s MyServerCert -a "NETWORK SERVICE" 進程

運行命令後,在運行WCF服務,一切OK了部署

 

 

其它解決辦法可參照:WCF部署:讓IIS有權限訪問證書文件it

 

-------------------------------------------------------------------------------------------------------------------------------io

若是設置了訪問權限,還出現上面的錯誤,那麼您須要設置一下應用程序池,操做以下:權限

分別進入Classic .NET AppPool 和 DefaultAppPool 高級設置,將進程模型標識設置爲 NetworkService 程序

相關文章
相關標籤/搜索