C# httpContext.Request.Path.StartsWithSegments的替代方案,用于一次检查多个路径段
我的代码 在上面的代码中,我检查了路径字符串段是否以“/api”开头。 但是,我想检查不止一个或一组这样的路径,我可以这样做C# httpContext.Request.Path.StartsWithSegments的替代方案,用于一次检查多个路径段,c#,.net,asp.net-core,.net-core,C#,.net,Asp.net Core,.net Core,我的代码 在上面的代码中,我检查了路径字符串段是否以“/api”开头。 但是,我想检查不止一个或一组这样的路径,我可以这样做 public async Task Invoke(HttpContext httpContext, ISecretKeyModel SecretKeyModel) { if (httpContext.Request.Path.StartsWithSegments("/api")) {
public async Task Invoke(HttpContext httpContext, ISecretKeyModel SecretKeyModel)
{
if (httpContext.Request.Path.StartsWithSegments("/api"))
{
if (httpContext.Request.Headers.TryGetValue("SecretKey", out StringValues SecretKey))
{
SecretKeyModel.SecretKey = SecretKey.SingleOrDefault();
if (SecretKeyModel.SecretKey.Equals(_config.Value.ClientSecretKey)) SecretKeyModel.IsValid = true;
}
}
await _next(httpContext);
}
但是我需要另一种方法来实现这一点您可以将需要检查的所有值放入列表或数组中,然后使用linq
Any()
方法:
if(httpContext.Request.Path.StartsWithSegments("/api") || httpContext.Request.Path.StartsWithSegments("/app"))
var list=newlist{/api',“/app”};
if(list.Any=>httpContext.Request.Path.StartsWithSegments)
{
...
}
var list = new List<string> { "/api", "/app" };
if (list.Any(s => httpContext.Request.Path.StartsWithSegments(s)))
{
...
}