程序發布前,跑在vs上是沒問題的,當發布后,程序就報錯了。通過系統日志找到了錯誤所在:證書調用時出現了異常。原因是:在iis上調用證書是需要配置的,具體配置如下:
一. 確保證書已安裝
1. 點擊 [開始] -> [運行] -> 鍵入[mmc] 進入“控制臺”界面 -> 選擇[文件] -> [添加/刪除管理單元]
2. 選擇[證書] -> [計算機賬戶] -> [下一步] -> [完成]
3. 選擇[個人] -> [證書] -> [所有任務] -> [導入] 。如果證書已存在則跳過此步驟,不用做導入操作。
二. 修改iis上對應項目的程序池標識
1. 打開iis -> 選擇[應用程序池] -> 選中對應的項目 -> 選擇右側的[高級設置]
2. 找到[進程模型] -> 修改[標識]屬性值
3. 將 applicationpoolidentity 修改為 networkservice
三. 對證書進行授權
1. 下載并安裝 工具(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 代表證書在計算機上安裝存儲位置
-s "證書的名稱" (證書名稱如何查看?如下圖:)
-a "iis程序池標識" (上面我們將iis程序池標識改成了networkservice) 所以是 -a "networkservice"
參考博文:記asp.net 使用 x509certificate2 出現的一系列問題
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。