Asp.Net?Core?中的靜態(tài)文件

默認(rèn)情況下,Asp.Net Core 應(yīng)用程序不會(huì)提供靜態(tài)文件。

靜態(tài)文件的默認(rèn)目錄是wwwroot,此目錄必須位于項(xiàng)目文件夾的根目錄中。

將圖片復(fù)制并粘貼到 wwwroot 文件夾中。我們假設(shè)文件的名稱(chēng)是 banner.jpg。為了能夠從瀏覽器訪(fǎng)問(wèn)此文件,路徑為:http://{{serverName}}/banner.jpg在我們的示例中,我們?cè)诒镜赜?jì)算機(jī)上運(yùn)行, 因此 URL 將如下所示。您的計(jì)算機(jī)上的端口號(hào)可能不同。http://localhost:3290/banner.jpg。

從我的電腦,然后導(dǎo)航到上面的 Url 的時(shí)候,

我們?nèi)匀皇峭ㄟ^(guò)Run()方法的中間件,返回響應(yīng)的結(jié)果,。我沒(méi)有看到圖片banner.jpg。

這是因?yàn)椋壳拔覀兊膽?yīng)用程序請(qǐng)求處理管道,沒(méi)有可以提供靜態(tài)文件的所需中間件。我們需要使用的中間件UseStaticFiles()。

修改Configure()方法中的代碼,將UseStaticFiles()中間件添加到我們的應(yīng)用程序的請(qǐng)求處理管道中,如下所示。

public void Configure(IApplicationBuilder app, IHostingEnvironment env)

{

? ? if (env.IsDevelopment())

? ? {

? ? ? ? app.UseDeveloperExceptionPage();

? ? }

? ? //添加靜態(tài)文件中間件

? ? app.UseStaticFiles();

? ? app.Run(async (context) =>

? ? {

? ? ? ? await context.Response.WriteAsync("Hello World!");

? ? });

}


提供 wwwroot 文件夾之外的靜態(tài)文件

默認(rèn)情況下,UseStaticFiles()中間件僅提供 wwwroot 文件夾中的靜態(tài)文件。如果您愿意,我們還可以在wwwroot文件夾之外提供靜態(tài)文件。

提供默認(rèn)文檔

大多數(shù) Web 程序都有一個(gè)默認(rèn)文檔,它是用戶(hù)訪(fǎng)問(wèn)程序地址時(shí)顯示的文檔內(nèi)容。例如,您有一個(gè)名為default.html的文件,并且您希望在用戶(hù)訪(fǎng)問(wèn)應(yīng)用程序的根 URL 時(shí)提供它,即http://localhost:3290

此時(shí),我們來(lái)訪(fǎng)問(wèn)這個(gè)地址看看,我看到我使用Run()方法注冊(cè)的中間件產(chǎn)生的回調(diào)。但是我沒(méi)有看到默認(rèn)文檔default.html的內(nèi)容。為了能夠提供默認(rèn)頁(yè)面,我們必須在應(yīng)用程序的請(qǐng)求處理管道中插入U(xiǎn)seDefaultFiles()中間件。

//添加默認(rèn)文件中間件

app.UseDefaultFiles();

//添加靜態(tài)文件中間件

app.UseStaticFiles();

請(qǐng)注意:必須在UseStaticFiles之前,注冊(cè)UseDefaultFiles來(lái)提供默認(rèn)文件。UseDefaultFiles是一個(gè) URL 重寫(xiě)器,實(shí)際上并沒(méi)有提供文件。它只是將URL重寫(xiě)定位到默認(rèn)文檔,然后還是由靜態(tài)文件中間件提供。地址欄中顯示的 URL 仍然是根節(jié)點(diǎn)的 URL,而不是重寫(xiě)的 URL。

以下是UseDefaultFiles中間件默認(rèn)會(huì)去查找的地址信息

- index.htm 的默認(rèn)文件

- index.html

- default.htm

- default.html

如果要使用其他文檔,如 52abp.html 例如,作為您的默認(rèn)文檔,您可以使用以下代碼執(zhí)行此操作。

//將52abp.html指定為默認(rèn)文檔

DefaultFilesOptions defaultFilesOptions = new DefaultFilesOptions();

defaultFilesOptions.DefaultFileNames.Clear();

defaultFilesOptions.DefaultFileNames.Add(“52abp.html”);

//添加默認(rèn)文件中間件

app.UseDefaultFiles(defaultFilesOptions);

//添加靜態(tài)文件中間件

app.UseStaticFiles();


UseFileServer 中間件

UseFileServer結(jié)合了UseStaticFiles,UseDefaultFiles和UseDirectoryBrowser中間件的功能。DirectoryBrowser中間件,支持目錄瀏覽,并允許用戶(hù)查看指定目錄中的文件。

我們可以用UseFileServer 中間件替換UseStaticFiles 和 UseDefaultFiles中間件。

/使用UseFileServer而不是UseDefaultFiles和UseStaticFiles

FileServerOptions fileServerOptions = new FileServerOptions();

fileServerOptions.DefaultFilesOptions.DefaultFileNames.Clear();

fileServerOptions.DefaultFilesOptions.DefaultFileNames.Add(“52abp.html”);

app.UseFileServer(fileServerOptions);

這里要注意的知識(shí)點(diǎn):是我們應(yīng)該使用添加中間件的方式,添加到應(yīng)用程序的請(qǐng)求處理管道的方法。

在大多數(shù)情況下,我們使用以 USE 開(kāi)頭的擴(kuò)展方法添加中間件。例如:

UseDeveloperExceptionPage()

UseDefaultFiles()

UseStaticFiles()

UseFileServer()

如果要自定義這些中間件組件,他有對(duì)應(yīng)的可配置選項(xiàng)卡。參考下表:

中間件 選項(xiàng)對(duì)象

UseDeveloperExceptionPage DeveloperExceptionPageOptions

UseDefaultFiles DefaultFilesOptions

UseStaticFiles StaticFileOptions

UseFileServer FileServerOptions

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容