Asp.Net Core 中的靜態文件 在這節中我們將討論如何使 ASP.NET Core 應用程式,支持靜態文件,如 HTML,圖像,CSS 和 JavaScript 文件。 靜態文件 預設情況下,Asp.Net Core 應用程式不會提供靜態文件。 靜態文件的預設目錄是wwwroot,此目錄必須 ...
Asp.Net Core 中的靜態文件
在這節中我們將討論如何使 ASP.NET Core 應用程式,支持靜態文件,如 HTML,圖像,CSS 和 JavaScript 文件。
靜態文件
- 預設情況下,Asp.Net Core 應用程式不會提供靜態文件。
- 靜態文件的預設目錄是
wwwroot
,此目錄必須位於項目文件夾的根目錄中。
將圖片複製並粘貼到 wwwroot 文件夾中。我們假設文件的名稱是 banner.jpg。為了能夠從瀏覽器訪問此文件,路徑為:http://{{serverName}}/banner.jpg
在我們的示例中,我們在本地電腦上運行, 因此 URL 將如下所示。您的電腦上的埠號可能不同。 http://localhost:3290/banner.jpg
。
從我的電腦,然後導航到上面的 Url 的時候, 我們仍然是通過Run()
方法的中間件,返迴響應的結果,。我沒有看到圖片banner.jpg
。 這是因為,目前我們的應用程式請求處理管道,沒有可以提供靜態文件的所需中間件。我們需要使用的中間件UseStaticFiles()
。
修改Configure()
方法中的代碼,將UseStaticFiles()
中間件添加到我們的應用程式的請求處理管道中,如下所示。
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
//添加靜態文件中間件
app.UseStaticFiles();
app.Run(async (context) =>
{
await context.Response.WriteAsync("Hello World!");
});
}
在wwwroot
文件夾中沒有像 vs 提供的預設模板一樣把圖片、CSS 和 JavaScript 文件進行分類,我們建議將不同的文件類型進行文件夾區分,參考下圖文件夾層次結構 :
為了能夠從瀏覽器訪問image1.jpg
我們輸入地址為 http://localhost:49119/images/image1.jpg
得到結果。
提供 wwwroot 文件夾之外的靜態文件
預設情況下,UseStaticFiles()
中間件僅提供 wwwroot 文件夾中的靜態文件。如果您願意,我們還可以在wwwroot
文件夾之外提供靜態文件。
提供預設文檔
大多數 Web 程式都有一個預設文檔,它是用戶訪問程式地址時顯示的文檔內容。例如,您有一個名為default.html
的文件,並且您希望在用戶訪問應用程式的根 URL 時提供它,即http://localhost:3290
此時,我們來訪問這個地址看看,我看到我使用Run()
方法註冊的中間件產生的回調。但是我沒有看到預設文檔default.html
的內容。為了能夠提供預設頁面,我們必須在應用程式的請求處理管道中插入UseDefaultFiles()中間件
。
//添加預設文件中間件
app.UseDefaultFiles();
//添加靜態文件中間件
app.UseStaticFiles();
請註意:必須在
UseStaticFiles
之前,註冊UseDefaultFiles
來提供預設文件。UseDefaultFiles
是一個 URL 重寫器,實際上並沒有提供文件。它只是將URL
重寫定位到預設文檔,然後還是由靜態文件中間件提供。地址欄中顯示的 URL 仍然是根節點的 URL,而不是重寫的 URL。
以下是UseDefaultFiles
中間件預設會去查找的地址信息
- index.htm 的預設文件
- index.html
- default.htm
- default.html
如果要使用其他文檔,如 52abp.html 例如,作為您的預設文檔,您可以使用以下代碼執行此操作。
//將52abp.html指定為預設文檔
DefaultFilesOptions defaultFilesOptions = new DefaultFilesOptions();
defaultFilesOptions.DefaultFileNames.Clear();
defaultFilesOptions.DefaultFileNames.Add(“52abp.html”);
//添加預設文件中間件
app.UseDefaultFiles(defaultFilesOptions);
//添加靜態文件中間件
app.UseStaticFiles();
UseFileServer 中間件
UseFileServer
結合了UseStaticFiles,UseDefaultFiles和UseDirectoryBrowser
中間件的功能。DirectoryBrowser中間件,支持目錄瀏覽,並允許用戶查看指定目錄中的文件。 我們可以用UseFileServer 中間件替換UseStaticFiles 和 UseDefaultFiles中間件。
/使用UseFileServer而不是UseDefaultFiles和UseStaticFiles
FileServerOptions fileServerOptions = new FileServerOptions();
fileServerOptions.DefaultFilesOptions.DefaultFileNames.Clear();
fileServerOptions.DefaultFilesOptions.DefaultFileNames.Add(“52abp.html”);
app.UseFileServer(fileServerOptions);
這裡要註意的知識點:是我們應該使用添加中間件的方式,添加到應用程式的請求處理管道的方法。 在大多數情況下,我們使用以 USE 開頭的擴展方法添加中間件。例如:
UseDeveloperExceptionPage()
UseDefaultFiles()
UseStaticFiles()
UseFileServer()
如果要自定義這些中間件組件,他有對應的可配置選項卡。參考下表: | 中間件 | 選項對象 | | ------------------------- | ----------------------------- | | UseDeveloperExceptionPage | DeveloperExceptionPageOptions | | UseDefaultFiles | DefaultFilesOptions | | UseStaticFiles | StaticFileOptions | | UseFileServer | FileServerOptions |
歡迎添加個人微信號:Like若所思。
歡迎關註我的公眾號,不僅為你推薦最新的博文,還有更多驚喜和資源在等著你!一起學習共同進步!