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

.NET 5 脚手架Identity忘记密码功能base64编码错误问题求助

排查方向
  • 邮件HTML属性分隔符兼容问题
    当前拼接邮件内容时使用单引号包裹href属性:
$"Please reset your password by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>."

部分邮件客户端对单引号作为HTML属性分隔符的兼容度较差,会错误将属性结尾的闭合单引号识别为URL的一部分,直接追加到query参数的code值末尾,这是概率最高的诱因。
优化方案:将href属性改为双引号包裹,符合HTML通用规范,避免解析歧义:

$"Please reset your password by <a href=\"{HtmlEncoder.Default.Encode(callbackUrl)}\">clicking here</a>."
  • SendGrid邮件内容预处理校验
    在调用_emailSender.SendEmailAsync之前,将最终拼接完成的邮件HTML内容输出到日志/调试控制台,检查链接末尾是否已经存在多余单引号,即可确认问题出在代码生成阶段还是SendGrid的内容处理阶段。
  • 本地URL生成逻辑校验
    在callbackUrl生成完成后立刻打印日志,确认code参数在生成URL时是否已经携带单引号,排除WebEncoders.Base64UrlEncode或Url.Page方法异常输出的可能性。

你当前使用的code = code.Replace("'", "");可以作为兼容兜底逻辑长期保留,避免极端场景下的解析错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:06:06