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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

很简单的自定义友好链接实现 .net core 2

發布時間:2025/4/5 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 很简单的自定义友好链接实现 .net core 2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

對于現在流行網站來說,內容的訪問路徑只使用 id 已經不能滿足了,以下提供一個簡單的中間件可以自由的用數據庫來自定義網站內容的友好鏈接,此方法完全不需要您再為每個不同的表加友好鏈接字段,通用性更好。

記錄表

/// <summary>/// 短鏈接記錄,對應 shortlinks 表/// </summary>[Table("shortlinks")]public class ShortLink{[Key][StringLength(128)]public string Path { get; set; }[Required][StringLength(1024)]public string Link { get; set; }[StringLength(45)]public string RefType { get; set; }[StringLength(32)]public string RefId { get; set; }public bool Enable { get; set; }}

中間件

/// <summary>/// 基于數據庫中 ShortLink 的設置重寫請求/// </summary>class ShortLinkMiddleware{private readonly RequestDelegate _next;private readonly ILogger<ShortLinkMiddleware> _logger;public ShortLinkMiddleware(RequestDelegate next, ILogger<ShortLinkMiddleware> logger){_next = next;_logger = logger;}public async Task InvokeAsync(HttpContext context, IMemoryCache cache){// 從緩存或數據庫中讀取短鏈接對應關系var links = await cache.GetOrCreateAsync(typeof(ShortLinkMiddleware), async e =>{// 設置緩存 15 分鐘e.SetAbsoluteExpiration(TimeSpan.FromMinutes(15));// 獲取數據訪問上下文var db = context.RequestServices.GetRequiredService<AppDbContext>();// 從數據庫讀取啟用狀態的短鏈接return await db.ShortLinks.Where(s=>s.Enable).ToListAsync();});// 獲取當前訪問路徑適配的短鏈接記錄var matchLink = links.FirstOrDefault(l => l.Path == context.Request.Path);if(matchLink != null){// 輸出轉換日志并修改當前請求的 Path_logger.Log(LogLevel.Trace, $"ShortLink {matchLink.Path} To {matchLink.Link}");context.Request.Path = matchLink.Link;}// 調用管道中的下一個委托或中間件await _next(context);}}

注冊中間件

在 Startup.cs 的 Configure 方法中加入 app.UseMiddleware<ShortLinkMiddleware>();

轉載于:https://my.oschina.net/jock/blog/1923362

總結

以上是生活随笔為你收集整理的很简单的自定义友好链接实现 .net core 2的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。