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

移动端设备检测报错:System.ArgumentOutOfRangeException(参数'start'越界)

异常原因及解决办法

原因

异常触发在第12行的httpContext.AsSpan(0, 4)代码。当传入的httpContext字符串长度小于4(包括字符串为null或者空串的情况)时,强行截取前4个字符的操作会超出字符串的有效范围,从而抛出System.ArgumentOutOfRangeException。

修复方案

先对httpContext做合法性校验,同时确保截取Span时的长度参数不超过字符串实际长度:

修改后的IsMobileDevice方法代码:

public static bool IsMobileDevice(string httpContext)
{ 
    if (string.IsNullOrEmpty(httpContext))
    {
        return false;
    }
    
    Regex b = RegexIsMobileDeviceB();
    Regex v = RegexIsMobileDeviceV();

    // 取实际长度和4的最小值,避免超出范围
    int validLength = Math.Min(httpContext.Length, 4);
    return b.IsMatch(httpContext) || v.IsMatch(httpContext.AsSpan(0, validLength));
}

额外说明

  • 先判断httpContext是否为空或null,能避免后续正则匹配时出现空引用问题。
  • 用Math.Min限制截取长度,当字符串长度不足4时,直接用整个字符串做匹配,既符合原逻辑的意图(匹配开头部分),又不会触发范围异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 10:24:51