linux asp大小写区分大小写,如何让 ASP.NET Core 的静态文件中间件在 Linux 上不区分大小写...

借助中间件(middleware)可以“篡改”请求上下文信息(这里是Request.Path)的能力解决了这个问题

中间件的实现代码如下:

public class LowercaseUrlMiddleware

{

private readonly RequestDelegate _next;

private readonly IEnumerable _wwwrootDirs;

public LowercaseUrlMiddleware(RequestDelegate next, IEnumerable wwwrootDirs)

{

_wwwrootDirs = wwwrootDirs;

_next = next;

}

public Task Invoke(HttpContext context)

{

var path = context.Request.Path.Value;

if (_wwwrootDirs.Any(dir => path.IndexOf($"/{dir}", StringComparison.OrdinalIgnoreCase) == 0))

{

context.Request.Path = new PathString(context.Request.Path.Value.ToLower());

}

return _next(context);

}

}

Startup.Configure 中添加中间件的代码如下:

var wwwrootDirs = Directory.GetDirectories(env.WebRootPath)

.Select(dir => Path.GetFileName(dir));

app.UseMiddleware(wwwrootDirs);

app.UseStaticFiles();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值