15.ASP.NET Core 應用程序中的靜態文件中間件

在這篇文章中,我將向你們介紹,如何使用中間件組件來處理靜態文件。這篇文章中,咱們討論下面幾個問題:html

  1. 在ASP.NET Core中,咱們須要把靜態文件存放在哪裏?
  2. 在ASP.NET Core中 wwwroot文件夾是啥?
  3. 怎樣在ASP.NET Core應用程序中,配置靜態文件中間件?
  4. UseFileServer中間件的做用是什麼?

        最重要的特性之一就是;幾乎全部的web應用程序都應該具有直接從文件系統存取靜態文件的能力。ASP.NET Core可以直接從客戶端獲取應用程序的靜態文件,好比:HTML、Images、CSS、以及JavaScript文件。可是最重要的一點,你須要記住的是:默認狀況下,在ASP.NET Core中並不能直接獲取訪問這些靜態文件。須要額外在作一些配置,ASP.NET Core纔可以直接獲取訪問這些靜態文件。web

在ASP.NET Core中,咱們須要把靜態文件存放在哪裏?

在ASP.NET Core中,默認存放靜態文件的目錄或者地方就是wwwroot文件夾,而且這個wwwroot文件夾須要放在項目的根目錄下面。默認狀況下,這是ASP.NET Core應用程序,能直接訪問靜態文件的目錄。可是咱們能夠經過使用UseWebRoot方法來改變這一默認行爲。在後面的文章中,我將介紹怎麼改變默認存在靜態文件的目錄。在這篇文章中,咱們就使用wwwroot文件夾,來存放靜態文件。緩存

咱們打開,以前文章中,作的例子,建立的空白的ASP.NET Core項目:學習

image

能夠看到空白模板,建的ASP.NET Core項目是沒有wwwroot文件夾的。網站

添加wwwroot文件夾

右鍵項目--選擇新建文件夾—【wwwroot】,一旦咱們建立了wwwroot文件夾,咱們在裏面添加一個html文件:MyCustom.html3d

image

在HTML文件中,加上這句代碼:htm

image

如今讓咱們來運行程序,輸入這個地址:http://localhost:51519/MyCustom.html中間件

image

你能夠看到,並無獲得咱們想要的輸出結果,頁面上顯示的是咱們在Configure方法中,使用Run擴展方法,輸出的結果:也就是Get One GetTwoblog

image

咱們之因此沒有獲得想要的結果:是由於在請求處理管道中沒有任何一箇中間件,能夠處理靜態文件。ip

配置靜態文件中間件

ASP.NET Core中,提供了一個UseStaticFiles中間件,它能夠用來處理靜態文件。咱們來修改一下Configure方法,添加這個中間件:

image

如今運行程序,輸出剛纔的地址,就能獲得想要的輸出結果了。

image

設置默認頁

大多數應用程序,都有一個默認的頁面,例如:index.html或者default.html,做爲它的啓動頁面,啓動頁面就是用戶訪問程序的根路徑的時候看到的頁面。例如:若是你有一個默認的index.html頁面,那麼無論何時用戶訪問你的網站根路徑的時候,看到的都是這個頁面。

如今咱們在wwwroot文件夾下,添加一個index.html文件:

image

寫上這句代碼:

image

如今運行程序,訪問根路徑:http://localhost:51519/

image

能夠看到,獲得的結果並非咱們想要的。爲了獲得想要的結果,咱們須要添加另一箇中間件,也就是UseDefaultFiles()到請求管道中去。因此咱們修改一下Configure方法:

image

如今咱們運行程序:

image

咦,咋回事,咱們不是加了默認頁面中間件了麼,怎麼沒效果???這是由於咱們添加的順序不對:

image

再運行就是咱們想要的結果了。

image

注意:你須要將UseDefaultFiles中間件,寫在UseStaticFiles中間件的上面。須要記住的是:UseDefaultFiles中間件僅僅只是將URL重寫,並不處理靜態文件。它的工做就是把URL重寫爲默認文件,而後UseStsticFiles中間件,就去處理這個默認文件,咱們就看到頁面了。

UseDefaultFiles中間件,將會在wwwroot目錄下面,找下面的文件:

index.htm

index.html

default.htm

default.html

這就是默認的行爲。可是你一樣能夠改變這一約定俗成的行爲。例如,若是你想MyCustom.html,做爲默認頁面,你能夠這樣:在Configure方法中,寫以下代碼:

image

如今運行程序就獲得你想要的結果了:

image

若是沒有獲得你想要的結果,可能就是頁面有緩存,用Ctrl+F5強制刷新一下,就好了。

UseFileServer中間件的做用是什麼?

UseFileServer中間件組件,包含這幾個中間件的功能:UseStaticFilesUseDefaultFiles以及UseDirectoryBrowser.咱們已經學習了UseStaticFiles和UseDefaultFiles這兩個中間件。UseDirectoryBrowser中間件,根據名字來看就是啓動目錄瀏覽,也就是容許用戶能夠看到指定目錄下面的文件。在咱們的例子中,咱們可使用UseFileServer中間件,來取代UseDefaultFiles和UseStsticFiles中間件,看:

image

而後運行程序:結果也是同樣:

image

能夠看到使用UseFileServer中間件,就很好的替換了以前的代碼了:是否是很厲害!

在下面的文章中,我將帶領你們學習,—>開發異常頁面中間件.這篇文章,我詳細介紹了,在ASP.NET Core中怎麼處理靜態文件,怎麼使用靜態文件中間件來處理靜態文件,但願大家都學會了,不明白的,你們能夠給我留言,若是以爲我寫得好,能夠點個贊,謝謝。

相關文章
相關標籤/搜索