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

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

一、DirectoryBrowserMiddleware

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

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

網(wǎng)友評論