程序發佈前,跑在vs上是沒問題的,當發佈後,程序就報錯了。經過系統日誌找到了錯誤所在:證書調用時出現了異常。緣由是:在IIS上調用證書是須要配置的,具體配置以下:html
一. 確保證書已安裝工具
1. 點擊 [開始] -> [運行] -> 鍵入[mmc] 進入「控制檯」界面 -> 選擇[文件] -> [添加/刪除管理單元]post
2. 選擇[證書] -> [計算機帳戶] -> [下一步] -> [完成]url
3. 選擇[我的] -> [證書] -> [全部任務] -> [導入] 。若是證書已存在則跳過此步驟,不用作導入操做。spa
二. 修改IIS上對應項目的程序池標識3d
1. 打開IIS -> 選擇[應用程序池] -> 選中對應的項目 -> 選擇右側的[高級設置]日誌
2. 找到[進程模型] -> 修改[標識]屬性值htm
3. 將 ApplicationPoolIdentity 修改成 NetworkServiceblog
三. 對證書進行受權進程
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. 在控制檯中輸入指令 cd C:\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"