为什么Url.EmailConfirmationLink返回null

时间:2018-12-30 15:32:30

标签: asp.net-core asp.net-core-2.1

我被卡住了。

在新的项目生成的代码中,该代码创建了可插入电子邮件的URL。

public static string EmailConfirmationLink(this IUrlHelper urlHelper, string userId, string code, string scheme)
    {
        return urlHelper.Page(
            "/Account/ConfirmEmail",
            pageHandler: null,
            values: new { userId, code },
            protocol: scheme);
    }

我正在使用它,但是它总是返回null。

但是在代码的另一个地方,它创建了一个用于重置密码的URL,它确实起作用。该代码是相同的,但一种有效,而另一种无效。因此,这意味着参数有问题。但是我看不出参数有什么区别。

这些参数起作用:

方案:"https"

userId:"47520958-d9be-4f50-add3-b56bbe607db1"

代码:"CfDJ8BDMTyrHOg9JlayOwfP2DlxkCwozoq0o5TmyKtmg1KC/+PPXvp/HwMC9LP+S1+NDYaMk9lVNRYHBAjfBWnfqJ9msre2t02eQSVQwrM0tx1bXd3cfbTFC0WYEkvSNWo8dkLIc3izlPsQJ+Xi1aq8D/skgQ6WoKI9Tsk8y53UdYq47W4iK6dhORZiU3h1L5dXWPJh2Cj6xfEy7u2hVhu4rjWYxyQz1ic7BfiJTkLMtHVot"

这些不是:

UserId:"9e006f58-3869-4b99-aeb7-0cd7b4567013"

代码:"CfDJ8BDMTyrHOg9JlayOwfP2DlwMwzc+RVxw6s8CXV/Uw3FYidocTDd0tk/VFUS3SCUMcWfttRTGtQL7cDbqwg9HX6r58xMqpyfqbMVFIiJD5/s37roSKU9FAAanbMJjgvAFiYiO3rXEntVfPcGimW5LTqeajaQrVOFAyAlNbqNqGbKJ9nmTo7hbFQ/zwk4TWbjt/nfK00V18C2+7bqcGJdX8ZS15K4kID68VU6nAAf5j5YpDoVp8hbVXZWF7Vi/S0yhNw=="

方案:"https"

1 个答案:

答案 0 :(得分:0)

事实证明,如果页面在某个区域下,则必须这样包含该区域:

 var callbackUrl = Url.Page(
    "/Account/ConfirmEmail",
    pageHandler: null,
    values: new { area = "Identity", userId = user.Id, code = code },
    protocol: Request.Scheme);

在这里回答:https://github.com/aspnet/Mvc/issues/8280