和StaticFileMiddleware中間件一樣,DirectoryBrowserMiddleware中間本質(zhì)上還是定義了一個請求地址與某個物理目錄之間的映射關(guān)系,而目標(biāo)目錄體現(xiàn)為一個FileProvider對象。當(dāng)這個中間件接收到匹配的請求后,會根據(jù)請求地址解析出對應(yīng)目錄的相對路徑,并利用這個FileProvider獲取目錄的內(nèi)容。目錄的內(nèi)容最終會以一個HTML文檔的形式被定義,而此HTML最終會被這個中間件作為響應(yīng)的內(nèi)容,“目錄瀏覽器”的實現(xiàn)原理就這么簡單。 [本文已經(jīng)同步到《ASP.NET Core框架揭秘》之中]

目錄
一、DirectoryBrowserMiddleware
二、DirectoryFormatter
三、具體請求處理邏輯
四、自定義DirectoryFormatter

一、DirectoryBrowserMiddleware

接下來我們來看看DirectoryBrowserMiddleware的定義。如下面的代碼片段所示,DirectoryBrowserMiddleware的第二個構(gòu)造函數(shù)具有四個參數(shù),其中第二個參數(shù)是代表當(dāng)前執(zhí)行環(huán)境的HostingEnvironment。作為第三個參數(shù)的是一個HtmlEncoder對象,當(dāng)目標(biāo)目錄被呈現(xiàn)為一個HTML文檔的時候,它被用于實現(xiàn)針對HTML的編碼,如果沒有顯式指定(調(diào)用第一個構(gòu)造函數(shù)),默認(rèn)的HtmlEncoder(HtmlEncoder.Default)會被使用。至于第四個類型為IOptions<DirectoryBrowserOptions>的參數(shù),則承載了針對DirectoryBrowserMiddleware的配置選項,DirectoryBrowserOptions與前面介紹的StaticFileOptions一樣,它們都是SharedOptionsBase的子類。

   1: public class DirectoryBrowserMiddleware
   2: {
   3:    &nb
        
		

網(wǎng)友評論