C# httpContext.Request.Path.StartsWithSegments的替代方案,用于一次检查多个路径段

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")) {

我的代码

在上面的代码中,我检查了路径字符串段是否以“/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)))
{
    ...
}