You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中如何从Cookie列表中获取前缀为__RequestVerificationToken_的Cookie索引

解决方案

你不需要刻意获取目标Cookie的索引,直接通过固定前缀筛选即可,之前的写法报错是因为IndexOf方法本身不支持传入lambda表达式作为匹配条件。

最优实现(无需索引)

建议直接摊平所有Cookie后做前缀匹配,既规避了索引顺序不确定的问题,也能减少不必要的重复调用:

var headers = actionContext.Request.Headers;
// 一次性获取所有Cookie,避免多次调用GetCookies产生额外开销
var allCookies = headers.GetCookies()
                .SelectMany(cookieHeader => cookieHeader.Cookies)
                .ToList();

// 用StartsWith做前缀匹配,比Contains精准度更高,避免误匹配
var targetCookie = allCookies.FirstOrDefault(c => c.Name.StartsWith("__RequestVerificationToken_"));

if (targetCookie != null)
{
    // 可直接获取完整Cookie名称和对应值
    string fullCookieName = targetCookie.Name;
    string cookieValue = targetCookie.Value;
    // 此处补充你的业务逻辑
}

如果你确实需要获取索引

如果业务场景必须拿到索引位置,可以使用FindIndex方法实现:

int targetIndex = allCookies.FindIndex(c => c.Name.StartsWith("__RequestVerificationToken_"));
// 索引大于等于0说明存在匹配的Cookie
if (targetIndex >= 0)
{
    var targetCookie = allCookies[targetIndex];
    // 后续逻辑
}

优化说明

  • 调用SelectMany可以直接把多层嵌套的Cookie集合摊平为一维集合,不需要处理CookieHeader和内层Cookie的两层索引
  • 用StartsWith代替Contains做匹配,避免误匹配到名称中间包含目标字符串的非预期Cookie
  • 仅调用一次GetCookies,减少重复计算开销

内容的提问来源于stack exchange,提问作者ANEES

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 21:27:03