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

Asp.Net Core 2.2生成passwordResetLink返回null问题求助

问题根因

你使用了AddDefaultUI(UIFramework.Bootstrap4)注入Identity内置页面,这套内置页面是基于Razor Pages实现的,没有对应的MVC控制器和ResetPassword Action,调用Url.Action匹配MVC路由自然会返回null。

解决方案

根据你的使用场景二选一即可:

方案1:使用默认Identity的重置密码页面

把Url.Action替换为适配Razor Pages的Url.Page,代码修改如下:

var passwordResetLink = Url.Page(
    "/Account/ResetPassword",
    "Identity",
    new { email = model.Email, token = token },
    Request.Scheme);

方案2:使用自定义的Account控制器ResetPassword Action

如果你自己已经实现了Account控制器下的ResetPassword Action,需要做两项检查:

  • 确保ResetPassword Action添加了[HttpGet]注解,路由没有额外约束,方法可匿名访问
  • 检查Startup.cs的Configure方法中是否配置了默认MVC路由,配置示例如下:
app.UseMvc(routes =>
{
    routes.MapRoute(
        name: "default",
        template: "{controller=Home}/{action=Index}/{id?}");
});

如果已经配置路由仍然返回null,可以用直接拼接路由的兜底方案:

var passwordResetLink = $"{Request.Scheme}://{Request.Host}/Account/ResetPassword?email={Uri.EscapeDataString(model.Email)}&token={Uri.EscapeDataString(token)}";

注意:直接拼接需要对参数做Uri编码,避免特殊字符导致链接无效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:15:02