隨着ASP.NET Core的日益完善,本人也想把他用於日后的生成環境中,所以現在自己的學習項目中體驗了一把,項目采用的是ASP.NET Core WebApi+Vue+element開發的一個后台管理系統。平時運行的時候都是通過vs啟動 IIS Express來發布后端api,前台ui則通過nodejs進行部署。最近嘗試把系統部署到 IIS,可在部署的過程中遇到許多的問題,所以特此記錄。
1.后台webapi的部署
具體的部署步驟就不細說了,這里有兩點需要注意:
第一:由於系統采用的目標框架是 .NET Core 3.1 所以對於應用程序池的 .NET CLR版本要選擇無托管代碼
第二:在webconfig中指定處理程序
百度出來的教程基本只提到第一點中的設置,所以要是發布一直步成功可以檢測下是不是少了下面的配置呢。
2.前台UI的部署
由於采用的是前后台分離的模式所以涉及到了跨域,在node下跨域是通過vue.config進行處理的配置如下(端口88是后台webapi的部署端口)
node會將所有api和swagger開頭的請求代理到88端口。但是部署到IIS后所有對api的請求都返回了404,怎么這個代理就失敗了呢,通過查閱vue.config的官方文檔才找到了原因,這個代理只有在開發環境下才生效。
那在IIS中怎么將請求代理到88的webapi呢?那就是通過url重寫來實現。
下載 URL Rewrite
下載 Application Request Routing
啟用ARR
(1)進入ARR設置
(2)進入代理設置
(3)啟用代理
URL重寫設置
(1)進入URL重寫設置
(2)添加規則
(3)選中空白規則
(4)設置匹配模式
(5)設置操作
提示{R:2}的意思請參考這篇博文:詳解IIS中的重寫工具下關於操作重定向URL中的{R:N}與{C:N}
至此前台的發布也已配置完畢所有以 http://localhost:89/api/開頭的請求都會被重寫到88端口。