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

BotDetect验证码在ASP.NET Razor Pages中无法正常验证如何解决

Razor Pages 下BotDetect Captcha验证失败解决方案

核心问题原因

直接初始化MvcCaptcha实例后读取IsSolved属性始终返回false,是因为该属性默认依赖Filter自动读取用户提交的验证码值做前置校验,手动调用场景下没有传入用户输入的验证码,实例无法完成校验逻辑。

正确验证步骤

  1. 前端页面渲染Captcha控件时,确保Captcha ID和输入框的name属性和后端对应:
<!-- 页面表单内代码示例 -->
<captcha id="ExampleCaptcha" captcha-input-id="CaptchaCode" />
<input type="text" name="CaptchaCode" placeholder="请输入验证码" />
  1. 后端OnPost方法中手动调用验证方法,传入用户输入的验证码和当前HttpContext:
public IActionResult OnPost(string CaptchaCode)
{
    // 参数对应前端设置的Captcha ID,需完全一致
    var mvcCaptcha = new MvcCaptcha("ExampleCaptcha");
    // 手动执行验证逻辑
    bool captchaIsValid = mvcCaptcha.Validate(CaptchaCode, HttpContext);

    if (captchaIsValid)
    {
        // 验证通过后续逻辑
    }
    else
    {
        ModelState.AddModelError("CaptchaCode", "验证码输入错误");
        // 验证失败后续逻辑
    }
    return Page();
}

配置检查项

  • 确认项目已正确启用Session服务,且BotDetect相关服务、中间件注册顺序符合要求,Session需在BotDetect中间件之前注册。
  • 前端Captcha ID和后端初始化时传入的ID拼写、大小写完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 09:42:00