如何修复执行JMeter脚本时出现的“AjaxControlToolkit Version=3.5.605”报错
报错原文
"Assembly "AjaxControlToolkit, Version=3.5.60501.0, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e" does not contain a script with hash code "de1feab2""
根因说明
该报错由AjaxControlToolkit v3.5.60501动态脚本资源哈希值动态变化导致:JMeter录制脚本时会硬编码首次请求返回的固定哈希值de1feab2,而.NET Framework 4.8环境下该哈希值会随服务端缓存、会话状态、并发量变化,二次执行或调高线程数时旧哈希值失效,触发服务端校验报错。
具体解决操作步骤
- 替换脚本中硬编码的哈希值为动态提取变量
在JMeter脚本首次触发服务端返回Ajax资源的请求下,添加正则表达式提取器,匹配响应内容中ScriptResource.axd请求携带的最新哈希值,自定义变量名例如ajax_script_hash - 批量更新所有关联请求的哈希参数
遍历脚本中所有携带固定哈希值de1feab2的请求,将固定值替换为变量${ajax_script_hash},确保每次请求都使用服务端最新返回的有效哈希 - 测试环境可临时关闭Ajax脚本哈希校验(可选)
打开被测系统的web.config配置文件,在<system.web>节点下新增如下配置,关闭脚本动态哈希生成逻辑:
该配置仅建议测试环境调试使用,不可用于生产环境<ajaxControlToolkit enableScriptCombining="false" /> - 调整JMeter并发请求间隔
在线程组下添加恒定定时器,设置100~300ms的请求间隔,避免高并发场景下服务端缓存未同步导致的偶发哈希校验失败 - 脚本有效性验证
先单线程循环执行10次确认无对应报错,再逐步调高线程数到目标负载量,查看结果树无异常即修复完成
内容的提问来源于stack exchange,提问作者Archana
相关产品推荐
相关产品推荐

