IIS 反向代理
直接訪問kestrel服務器,然而在WINDOWS上接收請求的最佳選擇仍然是IIS服務器.asp.net core教程上,也是要求將kestrel放在IIS之后處理請求,而由IIS接收請求,以保護服務器
需要做一些配置后,可以讓IIS反向代理ASP.NET CORE程序
一.下載asp.net core的IIS支持組件 dotnet-hosting-2.1.5-win.exe 下載地址 https://www.microsoft.com/net/download 在頁面中選擇Download .Net Core Runtime這個,下載之后安裝,IIS模塊會多一個

二.新建一個站點,目錄指向asp.net core程序的運行目錄.將站點的應用程序池設為無托管應用程序
三.站點的模塊和映射最小需要兩個模塊和兩個映射 靜態文件,asp.net core映射, asp.netcore模塊和匿名驗證模塊


四.web.config
asp.net core並不需要這個文件,由於掛IIS托管反向.所以這個文件用於IIS,它也放在asp.net core程序運行目錄下.其中最重要的配置節為
<aspNetCore processPath="dotnet"
arguments="Web.dll"
stdoutLogEnabled="true"
stdoutLogFile="./">
</aspNetCore>
processPath 表示使用dotnet命令,運行這個web程序. 只要架設好IIS后,不需要手動啟動asp.net core程序,通過這個命令,在iis啟動網站后,asp.net core程序就會啟動
arguments 表示asp.net web應用程序的那個可執行文件
后面兩個可以記錄日志,在調試時,日志會記錄出錯的地方.比如asp.net core程序沒有運行起來.出錯日志會記錄在程序運行目錄下.
五.遇到的錯誤
剛開始使用反向代理IIS 轉到 UseKestrel 后.發現無法運行出現502.3錯誤,
查看日志發現可能是權限不足,導致程序無法執行某些庫.
研究后發現,將用到的軟件包目錄添加上相應權限即可.users組,這個用戶添加到目錄上,讀取和執行權限.
在win10系統上,aspnetcore的軟件包位置默認有兩處
一處在於
C:\Users\當前用戶目錄下\.nuget 這個文件夾下,這個是Nuget包的總目錄,必須有執行權限
二處在於
C:\Program Files\dotnet 這個目錄下,這個是dotnet命令的目錄,另外,nuget包的依賴包,也在這個目錄下,C:\Program Files\dotnet\sdk\NuGetFallbackFolder
linux下運行
上面兩個路徑下裝了程序運行需要的所有庫,如果運行時報缺少庫,基本上就是這兩個地方的問題
NuGetFallbackFolder這個目錄比較重要,如果發現nuget包運行失敗缺少依賴項,則應檢查這個目錄下就沒有這個包的依賴項存在.一般來講,
通過VS的nuget包管理器下載的包,是沒有這個問題的.
當程序部署到其它機器如linux上時,就會發生這個問題.此時,只要將這兩個目錄的包,對應的復制到目標機器上就可以了
