.Net Core實踐4 web 反向代理


 

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上時,就會發生這個問題.此時,只要將這兩個目錄的包,對應的復制到目標機器上就可以了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM