我被卡住了。
在新的项目生成的代码中,该代码创建了可插入电子邮件的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"
答案 0 :(得分:0)
事实证明,如果页面在某个区域下,则必须这样包含该区域:
var callbackUrl = Url.Page(
"/Account/ConfirmEmail",
pageHandler: null,
values: new { area = "Identity", userId = user.Id, code = code },
protocol: Request.Scheme);