gpt4 book ai didi

asp.net-core - 检测来自 .NET 核心中间件的静态文件请求

转载 作者:行者123 更新时间:2023-12-03 14:48:04 24 4
gpt4 key购买 nike

我正在编写一些中间件来解析给定请求 URL 的子域以确定网站主题。我想忽略静态文件请求以减少不必要的数据库查找,我想知道是否有更简洁的方法来做到这一点。

这是我迄今为止尝试过的:

var staticFileExtensions = new List<string> { ".css", ".js", ".png", ".ico" };
if (staticFileExtensions.Any(x => httpContext.Request.Path.Value.EndsWith(x)))
{
await _next(httpContext);
}
else
{
var hostParts = httpContext.Request.Host.Host.Split('.').ToList();
if (httpContext.Request.Path.StartsWithSegments(new PathString("/healthcheck"))
|| (hostParts.Count == 6 && _whitelistedDomains.Contains(hostParts[0])))
{
httpContext.Items.Add("account", hostParts[0]);
await _next(httpContext);
}
else
{
httpContext.Response.StatusCode = (int)HttpStatusCode.NotFound;
}
}

这是我将它添加到 Startup.cs 的地方:
app.UseStaticFiles();
app.UseSpaStaticFiles();
app.UseDomainWhitelisting();

感觉好像应该有一种更干净的方法来检测要忽略哪些请求,或者我可能遗漏了什么?

最佳答案

您可以根据请求使用条件中间件。
就像是:

app.UseMiddlewareOne();

app.UseWhen(context => context.Request.Path.StartsWithSegments("/api"), appBuilder =>
{
appBuilder.UseMiddlewareTwo();
});

app.UseMiddlewareThree();
来源:
https://www.devtrends.co.uk/blog/conditional-middleware-based-on-request-in-asp.net-core

关于asp.net-core - 检测来自 .NET 核心中间件的静态文件请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59928836/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com