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

.NET Razor Pages账号确认失败:链接有Code但接收时为Null的原因

.NET Razor Pages账号确认Code为Null的解决方案

问题根源

你怀疑的HtmlEncoder.Default.Encode(callbackUrl)确实是问题核心:当你对整个callbackUrl做HTML编码时,URL中的参数分隔符&会被转成&,后端解析链接时无法识别code参数,最终导致接收值为Null。

解决步骤

  • 单独编码参数值,而非整个URL
    生成确认链接时,只对userId和code的参数值进行编码,再拼接成完整URL,示例代码:

    var userId = UserManager.GetUserId(user);
    var code = await UserManager.GenerateEmailConfirmationTokenAsync(user);
    // 仅编码参数值
    userId = HtmlEncoder.Default.Encode(userId);
    code = HtmlEncoder.Default.Encode(code);
    var callbackUrl = Url.Page(
        "/Account/ConfirmEmail",
        pageHandler: null,
        values: new { userId = userId, code = code },
        protocol: Request.Scheme);
    
  • 避免邮件模板重复编码
    邮件中渲染确认链接时,直接输出已正确生成的callbackUrl即可,不要再次对链接做HTML编码,防止&被二次转义。

  • 验证链接格式
    确保最终生成的链接中参数分隔符是&而非&,正确格式示例:
    https://你的域名/Account/ConfirmEmail?userId=xxx&code=xxx

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 19:38:18