註冊startup類能夠配置咱們web應用的啓動邏輯,使用的就是UseStartUp方法,asp.net core就會實例化這個類
並調用startup類裏面的兩個方法ConfigureServices和Configure
ConfigureServices方法裏是註冊服務,注入這些服務後就能夠注入到其餘的方法或者類裏面進行使用,這些註冊的服務包括咱們本身的寫這些服務,也包含.net core預約義好的一些服務
也包含.net core預約義好的一些服務,有一些默認也是沒有註冊的,須要咱們在這裏註冊下
方法:Configure裏面,咱們使用IApplicationBuilder來配置咱們的中間件,在真實的項目裏不多使用app.Run方法,一般app.Run裏面配置的中間件都是很是簡單的中間件,因此在真實的羨慕裏面,不大用app.Run這個中間件
真實項目裏一般使用app.use開頭的這些方法
useCors是跨域的,use開頭的方法把中間件都封裝了另一個方法或者另一個類裏面了
例如這裏使用useWelcomePage();這個中間件,運行查看效果
打開
換個路由地址都是這個歡迎頁,無論你進來是什麼樣的路徑,都是這個歡迎頁,後面的中間件就不會走了
中間件的參數一般在這裏寫,一般是一個對象,例如這裏
而後經過參數的設置來配置中間件
例如這裏咱們設置中間件的路徑是/Welcome
路由路徑後面加上welcome纔會跳轉到這個歡迎頁
其餘路徑就會走下面的 中間件html
直接在方法裏面寫中間件,比直接UseWelcomePage更底層一些
他的參數是一個Func,Func自己的參數類型就是RequestDelegate,Func返回的類型也是RequestDelegate
RequestDelegate類型就是一段可執行的代碼
這個參數Func有個參數,咱們叫它next,如今這個next就是RequestDelegate類型,RequestDelegate表明什麼意思呢?
它就表明在管道里,下一個將要執行的中間件,若是我在管道調用這個next就表示容許寫一箇中間件來處理http請求
中間件裏須要返回的類型仍是一個RequestDelegate
它須要傳入一個httpContext做爲他的參數,它的返回類型是Task
若是路徑裏面帶firtst就輸出一段字符串,不然就走next執行下一個中間件
輸入first的結果
輸入其餘地址就走最後一箇中間件web
爲了看走的中間件的明細,這裏注入日誌工具
Logger已經註冊到服務裏面了,是預先註冊的
用命令行運行
這裏直走了一次
選中的這段代碼,這個方法,只是在啓動配置的時候走了一遍
這塊纔是咱們中間件的代碼,每次請求可能都會走這段代碼,若是沒有其餘的中間件攔截的話編程
把其餘的中間件代碼都刪除,在這裏拋出一段異常看一下會有什麼效果
做爲開發者咱們可能須要錯誤的信息,就須要這個中間件,把這段代碼取消註釋
顯示了詳細的錯誤信息,異常發生在 哪行代碼
UseDeveloperExceptionPage放在位置比較靠前的位置,開發者異常頁面只適合給開發者看,客戶不適合看
在開發的環境下才會中這個中間件
經過IHostingEnvironment來獲取到底應用於那個環境裏,這裏這個環境一般是指開發環境或者是生產環境,或者測試環境
看下env裏面有什麼:
IsStaging叫作預演環境也行,演示環境也行
也可使用自定義的其餘的環境,判斷是不是集成測試的環境,參數是自定義的,能夠隨便起名
如何設置或者取得環境變量的值
也可使它設置環境變量的值
環境變量的屬性名呢?剛纔說的都是環境變量的值。ASPNETCORE_ENVIRONMENT這個是環境變量的屬性名
使用IISExpress調試就會走這段配置
因此這裏咱們運行後走的是Development環境
配置的屬性也能夠在這裏修改
修改爲Production
而後這裏這個文件就編程了Production
改爲Staging
屬性這裏也發生了改變
命令行走的是這一段代碼
對應的分別是這兩段
開發環境會把這個文件也會追加上
跨域
建立wwwroot文件夾,建立完成後,文件夾的圖標立馬變了
在wwwroot文件夾下新建index.html文件
運行起來, 可是輸入路徑找這個index.html找不到
由於startUp裏面設置的中間件只能返回welcome的信息
咱們須要設置另一箇中間件UseStaticFiles
再次訪問,能夠訪問到了
若是想使用其餘的文件件名做爲默認文件,能夠在參數裏面進行配置,注意這裏是UseDefaultFiles()這個中間件
UseDefaultFiles並非視圖文件,並不會把index.html內容返回去。它會改變請求的路徑,它把這個請求的路徑改爲好像是咱們要找的是index.html,他就改爲index.html這個路徑
而後再把這個請求傳送到下一個中間件。也就是這個UseStaticFiles,UseStaticFiles一看是index.html,他就會找到這個文件,並把這個文件返回去。就是這麼個原理,
因此中間件的順序很重要
若是把UseStaticFile放在UseDefaultFiles的前面,那麼就找不到這個頁面了。
UserFileServer把UseStaticFile和UseDefaultFiles這兩個中間件包進去了。可是他還有一些其餘功能,包括目錄瀏覽。這裏直接使用這一個中間件也是能夠的
只寫這一個也能夠正常的訪問
app