靜態文件(css,js,html等類型文件)通常位於 web根目錄下,而ASP.Net Core框架默認內容根目錄下的wwwroot
文件夾為web根目錄。這裏簡單解釋下內容根目錄:實際就是指包含可執行程序exe,程序集dll,配置文件json,xml等的文件目錄.
1.訪問web根目錄靜態文件
正常情況下,靜態文件是無法直接訪問的,需要我們添加如下靜態文件的中間件,這是框架內置自帶的。
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseStaticFiles();
}
然後我們就可通過web根目錄的相關路徑訪問靜態文件。例如,Web 應用程序項目模板包含 wwwroot 文件夾中的多個文件夾 :
- wwwroot
- css
- images
- js
然後就可以通過如下格式的URL:https://localhost:5001/images/123.jpg 來訪問靜態文件。
2.訪問web根目錄之外的靜態文件
有些時候,可能有些靜態文件我們並不是放在web根目錄下面的。例如如下一個目錄層次結構,其中要提供的靜態文件位於 Web 根目錄之外:
- wwwroot
- css
- images
- js
- Content
- images
- img.jpg
- images
如果通過URL:https://localhost:5001/Content/images/img.jpg是無法訪問的,這個時候我們就需要額外的指定靜態文件路徑:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
//wwroot目錄下靜態文件
app.UseStaticFiles(); //wwwroot之外的靜態文件 app.UseStaticFiles(new StaticFileOptions { //指定實際物理路徑 FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), @"Content/images")), //設置URL請求的文件路徑 RequestPath = new Microsoft.AspNetCore.Http.PathString("/MyStaticFiles") }); }
然後就可以通過如下格式的URL:https://localhost:5001/MyStaticFiles/img.jpg 來訪問靜態文件。
3.提供默認文件
UseDefaultFiles中間件用於啟用默認文件的功能,例如我們打開一個網站只輸入網站地址,就會自動跳出網站首頁。這裏的網站首頁實際就相當於一個默認文件。
ASP.Net Core為我們簡化了默認文件的搜索功能,我們只需要添加中間件即可。
public void Configure(IApplicationBuilder app)
{
app.UseDefaultFiles();
app.UseStaticFiles();
}
要提供默認文件,必須在 UseStaticFiles
前調用 UseDefaultFiles
。 UseDefaultFiles
實際上用於重寫 URL,不提供文件。 通過 UseStaticFiles
啟用靜態文件中間件來提供文件。
UseDefaultFiles
默認支持以下幾種類型文件:
- default.htm
- default.html
- index.htm
- index.html
當然,框架也支持自定義默認文件,感興趣的同學可以研究一下。
例如如下一個目錄層次結構:
- wwwroot
- Index.html
- css
- images
- js
-
通過URL:https://localhost:5001/訪問時,會自動跳轉到並打開Index.html頁面
4.啟用目錄瀏覽功能
出於安全考慮,目錄瀏覽默認處於禁用狀態,需通過添加UseDirectoryBrowser中間件的方式開啟。
public void Configure(IApplicationBuilder app)
{
//默認文件
app.UseDefaultFiles(); //靜態文件 app.UseStaticFiles(); //目錄瀏覽 app.UseDirectoryBrowser(); }
另外,需要註冊目錄瀏覽的服務
public void ConfigureServices(IServiceCollection services)
{
services.AddDirectoryBrowser();
}
例如如下一個目錄層次結構:
wwwroot
- 123.jpg
- 234.jpg
通過URL:https://localhost:5001/訪問時,由於wwwroot根目錄下不存在默認文件,所以會打開文件目錄。
5.UseFileServer
UseFileServer 結合了 UseStaticFiles
、UseDefaultFiles
和 UseDirectoryBrowser
(可選)的功能。
例如以下目錄層次結構:
- wwwroot
- 123.jpg
- 234.jpg
- Content
- images
- 234.jpg
- images
以下代碼啟用靜態文件、默認文件和及 MyStaticFiles
的目錄瀏覽:
public void Configure(IApplicationBuilder app)
{
//靜態文件
app.UseStaticFiles();
app.UseFileServer(new FileServerOptions { FileProvider = new PhysicalFileProvider( Path.Combine(Directory.GetCurrentDirectory(), "Content")), RequestPath = "/MyStaticFiles",
//啟用目錄 EnableDirectoryBrowsing = true }); }
EnableDirectoryBrowsing
屬性值為 true
時必須註冊服務 AddDirectoryBrowser
:
public void ConfigureServices(IServiceCollection services)
{
services.AddDirectoryBrowser();
}
通過URL:https://localhost:5001/MyStaticFiles/訪問時,由於目錄下不存在默認文件,所以會打開文件目錄。
本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】
※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面
※網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!
※想知道最厲害的網頁設計公司"嚨底家"!
※別再煩惱如何寫文案,掌握八大原則!
※產品缺大量曝光嗎?你需要的是一流包裝設計!