日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET Core开发实战(第23课:静态文件中间件:前后端分离开发合并部署骚操作)--学习笔记(上)...

發(fā)布時(shí)間:2023/12/4 asp.net 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET Core开发实战(第23课:静态文件中间件:前后端分离开发合并部署骚操作)--学习笔记(上)... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

23 | 靜態(tài)文件中間件:前后端分離開發(fā)合并部署騷操作

我們先來看一下靜態(tài)文件中間件有哪些能力

1、支持指定相對路徑

2、支持目錄的瀏覽

3、支持設(shè)置默認(rèn)文檔

4、支持多目錄映射

源碼鏈接:
https://github.com/witskeeper/geektime/tree/master/samples/StaticFilesDemo

首先使用靜態(tài)文件中間件

// 通過這一行代碼就可以訪問到靜態(tài)配置文件 app.UseStaticFiles();

這樣就可以將 wwwroot 目錄映射出來,這是一個(gè)默認(rèn)的配置,也就是說,當(dāng)我們需要使用中間件靜態(tài)文件輸出的時(shí)候,首選就是應(yīng)該把靜態(tài)文件放在 wwwroot 下面

我們在這個(gè)目錄下面放了幾個(gè)文件:index.html,app.js,a 目錄下面也有一個(gè) index.html 和一個(gè) a.js,這兩個(gè) index.html 的內(nèi)容是不一樣的

a/index.html

<!DOCTYPE html> <html> <head><meta charset="utf-8" /><title>/a/index</title><script src="a.js"></script> </head> <body><h1>這是/a/index</h1> </body> </html>

index.html

<!DOCTYPE html> <html> <head><meta charset="utf-8" /><title>靜態(tài)首頁</title><script src="app.js"></script> </head> <body><h1>這是靜態(tài)首頁</h1> </body> </html>

啟動(dòng)程序,由于我們沒有指定相對路徑,所以說我們的根目錄是/,就代表訪問到了 wwwroot,輸入 index.html,可以看到 javaScript 執(zhí)行

https://localhost:5001/index.html

如果把地址換一下,會(huì)得到另一個(gè)頁面

https://localhost:5001/a/index.html

如果默認(rèn)情況下都是訪問 index.html,怎么做呢?

app.UseDefaultFiles();

這個(gè)方法還有一個(gè)重載

namespace Microsoft.AspNetCore.Builder {public static class DefaultFilesExtensions{public static IApplicationBuilder UseDefaultFiles(this IApplicationBuilder app);public static IApplicationBuilder UseDefaultFiles(this IApplicationBuilder app,DefaultFilesOptions options);public static IApplicationBuilder UseDefaultFiles(this IApplicationBuilder app,string requestPath);} }

DefaultFilesOptions

namespace Microsoft.AspNetCore.Builder {public class DefaultFilesOptions : SharedOptionsBase{public DefaultFilesOptions();public DefaultFilesOptions(SharedOptions sharedOptions);public IList<string> DefaultFileNames { get; set; }} }

可以設(shè)置 DefaultFileNames,默認(rèn) index.html 是在里面的,所以這里可以不輸入任何參數(shù)

啟動(dòng)程序,訪問根目錄的時(shí)候,應(yīng)該輸出首頁的 index

https://localhost:5001/

訪問 a 目錄會(huì)輸出 a 的 index

還有一種場景就是我們需要瀏覽我們的目錄

在 ConfigureServices 注冊 AddDirectoryBrowser

public void ConfigureServices(IServiceCollection services) {services.AddControllers();services.AddDirectoryBrowser(); }

然后在 Configure 里面啟用

app.UseDirectoryBrowser();

啟動(dòng)程序,訪問根目錄

可以看到瀏覽器上面顯示了目錄的文件,當(dāng)我們點(diǎn)擊其中的一個(gè)文件的時(shí)候,實(shí)際上是訪問這個(gè)文件,我們還可以瀏覽它的子目錄

這是我們在使用 wwwroot 的情況下,實(shí)際上我們還可以使用其他的目錄,把其他的目錄也注冊進(jìn)來

我們在應(yīng)用程序的 file 目錄下面另外添加了一個(gè) page.html

<!DOCTYPE html> <html> <head><meta charset="utf-8" /><title>page</title> </head> <body><h1>page</h1> </body> </html>

我們也期望可以訪問到這個(gè)文件,我們就可以這樣去做

app.UseStaticFiles();app.UseStaticFiles(new StaticFileOptions {// 注入我們的物理文件提供程序,把我們的當(dāng)前目錄加 file,就是 file 目錄,賦值給我們的提供程序// 這樣子的效果就是我們的 wwwroot 會(huì)優(yōu)先去尋找我們的文件,如果沒有的話就會(huì)執(zhí)行下一個(gè)中間件// 然后在這個(gè)中間件里面再找我們的文件是否存在,如果沒有的話,它會(huì)去執(zhí)行后面的路由和 MVC 的 Web API 的 ControllerFileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "file")) });

因?yàn)檫@里我們?nèi)雲(yún)⒉]有設(shè)置相對路徑,也就是說我們根目錄對應(yīng)的也是 file 這個(gè)目錄,我們這里可以輸出 page.html

https://localhost:5001/page.html

我們的 page.html 就可以訪問到了

還有一種情況是我們希望把我們的靜態(tài)目錄映射為某一個(gè)特定的 URL 地址目錄下面,我們可以這樣去做

app.UseStaticFiles();app.UseStaticFiles(new StaticFileOptions {// 我們希望把我們的靜態(tài)目錄映射為某一個(gè)特定的 URL 地址目錄下面RequestPath = "/files",// 注入我們的物理文件提供程序,把我們的當(dāng)前目錄加 file,就是 file 目錄,賦值給我們的提供程序// 這樣子的效果就是我們的 wwwroot 會(huì)優(yōu)先去尋找我們的文件,如果沒有的話就會(huì)執(zhí)行下一個(gè)中間件// 然后在這個(gè)中間件里面再找我們的文件是否存在,如果沒有的話,它會(huì)去執(zhí)行后面的路由和 MVC 的 Web API 的 ControllerFileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "file")) });

訪問以下路徑就可以看到我們的靜態(tài)文件頁面

https://localhost:5001/files/page.html

也就是說我們可以把任意的文件目錄映射為任意的 URL 地址

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的.NET Core开发实战(第23课:静态文件中间件:前后端分离开发合并部署骚操作)--学习笔记(上)...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。