ASP.NET Core中wwwroot文件夾
默認情況下,ASP.NET Core應用程序中的wwwroot文件夾被視為webroot文件夾,並且該文件夾或目錄應位於根項目文件夾中。 在ASP.NET Core應用程序中,靜態文件可以存儲在webroot文件夾下的任何文件夾中,並且可以使用指向該根目錄的相對路徑進行訪問。
添加wwwroot(webroot)文件夾
當使用Web和MVC模板創建ASP.NET Core Web應用程序時,默認情況下,該文件夾(wwwroot)在根項目文件夾中創建。 但是,如果使用空模板創建新的.NET Core應用程序,則默認情況下,Visual Studio將不會創建此文件夾。
現在, 讓我們使用Empty項目模板來創建一個ASP.NET Core應用程序, 然后了解如何添加wwwroot文件夾。
為了添加wwwroot文件夾,右鍵單擊項目,然后選擇 添加 => 新建文件夾 選項,然后將文件夾名稱提供為wwwroot。 創建文件夾后,請如下所示查看文件夾符號。
在早期的ASP.NET應用程序中,可以從項目根文件夾或它下面的任何其他文件夾提供靜態文件。 但這已在ASP.NET Core中更改。
現在,只能通過HTTP請求為webroot – wwwroot文件夾或其下的任何子文件夾中的文件提供服務。
其他所有文件均被阻止,默認情況下無法提供。 但是,如果您願意,還可以更改此默認行為。
通常,wwwroot文件夾內應有用於不同類型的靜態文件的單獨文件夾,例如JavaScript,CSS,圖像,庫腳本等,如下所示:
現在,您可以使用基本URL和文件名訪問靜態文件,例如CSS,js,lib。
例如,您可以通過https:// localhost:
注意:為了提供靜態文件,您需要在Startup.cs文件的“
Configure()”方法中包括
app.UseStaticFiles()中間件組件。
wwwroot可以重命名嗎?
是的。 您可以根據自己的選擇將wwwroot文件夾重命名為任何其他名稱,並在准備Program.cs文件中的托管環境時將其設置為webroot。
例如,讓我們將wwwroot文件夾重命名為“ MyRoot”文件夾。
將wwwroot文件夾重命名為MyRoot之后,您需要調用UseWebRoot()方法以將MyRoot文件夾配置為Program類的Main()方法中的webroot文件夾,如下所示。
如何訪問wwwroot文件夾?
如上所示, 我們可以創建基於自身重命名的文件夾, 也可以使用wwwroot文件夾, 接下來, 我們在MyRoot文件夾當中,添加一個index.html文件, 並且修改html當中的內容, 如下所示。
然后,啟動應用程序, 當創建的是默認的Empty模板的程序,試圖訪問根文件夾下的index.html,如下所示。
之所以沒有像預期的那樣獲取輸出,因為我們沒有任何中間件可以為請求處理管道中的靜態文件服務。
如何配置靜態文件中間件?
為了處理靜態資源,我們需要在應用程序的應用程序請求處理管道中配置一個名為 UseStaticFiles() 中間件件。
UseStaticFiles()中間件是由框架提供的內置中間件ASP.NET用於處理核心應用程序中的靜態ASP.NET文件。
讓我們修改Startup中的Configure方法,將 UseStaticFiles()中間件添加到應用程序的請求處理管道中, 如下所示。
接下來將按預期方式看到輸出,如下圖所示。
現在,如果從 URL 中刪除 index.html ,將提示找不到此localhost頁面, 但是,我們想要的是,當我們導航到上文所示的URL 時,我們希望我們的 index.html 頁面能夠滿足請求。
也就是說,我們需要將 index.html 頁面設置為默認頁面。
如何設置默認頁面?
大多數Web應用程序都有一個默認頁面,例如index.html或default.html作為啟動頁面,因為它很容易記住。
當用戶訪問該應用程序的根URL時,將顯示該網頁。 例如,如果您有一個名為index.html的頁面,並且希望將該頁面作為默認頁面,以便每當任何用戶訪問您的根URL時,都將顯示該頁面。
為了將位於wwwroot文件夾中的index.html頁面作為應用程序的默認頁面提供服務,您需要向請求處理管道中添加另一個中間件,即UseDefaultFiles()中間件。
因此,如下所示修改Startup類的Configure()方法以使用UseDefaultFiles()中間件,該中間件將為您的應用程序設置默認頁面。
注意:您需要在UseStaticFiles()中間件之前添加UseDefaultFiles()中間件,以便提供默認文件。 您需要記住的一點是UseDefaultFiles()中間件只是URL重寫器,它永遠不會提供靜態文件。 該中間件的工作是簡單地將傳入URL重寫為默認文件,然后由靜態文件中間件提供服務。
如何將“自定義HTML頁”設置為默認頁面?
UseDefaultFiles()中間件將在wwwroot文件夾中搜索以下文件:
- index.htm
- index.html
- default.htm
- default.html
這是默認行為。 但是,如果您願意,還可以更改此默認行為。 例如,讓我們將另一個HTML頁面添加到項目wwwroot文件夾中,其名稱為Page1.html。
添加Page1.html文件后,wwwroot文件夾將包含兩個HTML文件,如下圖所示。
將Page1.html設置為默認頁面:
現在,我們希望Page1.html頁面成為我們的默認頁面,而不是index.html頁面。 為此,您需要按如下所示修改Startup類的Configure()方法。
在這里,我們將創建DefaultFilesOptions類的實例,並將默認文件名添加為Page1.html,然后將此對象傳遞給UseDefaultFiles中間件。
UseFileServer()中間件組件的用途是什么?
UseFileServer()中間件組件結合了UseStaticFiles,UseDefaultFiles和UseDirectoryBrowser中間件的功能。
我們已經討論了UseStaticFiles和UseDefaultFiles中間件。 顧名思義,DirectoryBrowser中間件啟用了目錄瀏覽,使用戶可以查看存儲在特定目錄中的文件。
在我們的示例中,我們可以使用UseFileServer()中間件替換UseStaticFiles()和UseDefaultFiles()中間件,如下所示。