近期由於工作原因,需要發布.net core架構下的webapi到IIS上。遭遇了一番蹂躪,特此記下,以備後面使用。
首先工作中有2個服務。一個是identityserver4的服務,負責token的發放,一個是我們的業務webApi。
當客戶需要調用我們的webapi時,要先到identityserver4上去申請一個token。然後使用這個token來訪問我們的webapi。
授權伺服器identityserver4,是開源的。在git上可以直接獲得。是基於.net core 開發的。我用的是基於.net core 1.0的。
下面它的部署就登場了。建議使用微軟提供的文檔。文檔地址
https://docs.microsoft.com/en-us/aspnet/core/publishing/iis
文檔最後面有常見問題Common errors 和解決方式 Troubleshooting。
由於伺服器是server2012 ,所用的iis版本為8.5.支援 本身支援 .net 4.5
1.安裝iis webserver
2 安裝 .net core windows server hosting bundle
注意安裝完畢之後,重啟伺服器,或者執行 net stop was /y followed by net start w3svc from a command prompt to pick up a change to the system PATH
否則,會報
502.3 Bad Gateway - There was a connection error while trying to route the request
雖然在文檔中的troubleshooting裡提到,但是根據那個解決不了問題。還是得靠重啟。 或者那個命令。
3 安裝.net core 執行階段程式庫,我安裝的.net core sdk
在cmd裡面運行 dotnet可以驗證安裝是否正確。
4 將vs裡發布的包,放入iis裡,很普通的網站發布一樣。
但是應用程式集區 裡 .net 架構 要選擇 無Managed 程式碼。
第二個 webapi的發布和一般的mvc的web發布一樣。
5 如果報 500 內部錯誤或者webapi沒有正確 記錄日誌,請查看日誌的配置,以及iisuser對檔案夾的許可權。
這和其他網站發布沒有區別。