DefaultFilesMiddleware中間件的目的在于將目標(biāo)目錄下的默認(rèn)文件作為響應(yīng)內(nèi)容。我們知道,如果直接請(qǐng)求的就是這個(gè)默認(rèn)文件,那么前面介紹的StaticFileMiddleware中間件會(huì)將這個(gè)文件響應(yīng)給客戶端。如果我們能夠?qū)⑨槍?duì)目錄的請(qǐng)求重定向到這個(gè)默認(rèn)文件上,一切就迎刃而解了。實(shí)際上DefaultFilesMiddleware中間件的實(shí)現(xiàn)邏輯很簡(jiǎn)單,它采用URL重寫的形式修改了當(dāng)前請(qǐng)求的地址,即將針對(duì)目錄的URL修改成針對(duì)默認(rèn)文件的URL。[本文已經(jīng)同步到《ASP.NET Core框架揭秘》之中]
我們照例先來(lái)看看DefaultFilesMiddleware類型的定義。和其他兩個(gè)中間件類似,DefaultFilesMiddleware的構(gòu)造就有一個(gè)IOptions<DefaultFilesOptions>類型的參數(shù)來(lái)指定相關(guān)的配置選項(xiàng)。由于DefaultFilesMiddleware中間件本質(zhì)上依然體現(xiàn)了請(qǐng)求路徑與某個(gè)物理目錄的映射,所以DefaultFilesOptions依然派生于SharedOptionsBase。DefaultFilesOptions的DefaultNames屬性包含了預(yù)定義的默認(rèn)文件名,我們可以看到它默認(rèn)包含四個(gè)名稱(default.htm、default.html、index.htm或者index.html)。
1: public class DefaultFilesMiddleware
2: {
3: public DefaultFilesMiddleware(RequestDelegate next, IHostingEnvironment hostingEnv, IOptions<DefaultFilesOptions> options);
網(wǎng)友評(píng)論