在 asp.net 核心 api 中创建回调 url

create callback url in asp.net core api

我尝试在 asp.net 核心 API 中使用 Identity,一切正常,除了我找不到创建回调 url 以进行电子邮件确认的方法。 我搜索了很多,但没有人在 ASP.NET 核心 API.

中实现带有电子邮件确认的身份

这是我的 RegisterUser 代码:

var user = new ApplicationUser
        {
            Name = model.Name,
            Email = model.Email,
            UserName = model.Email
        };

var result = await _userManager.CreateAsync(user, model.Password);

if (result.Succeeded)
{
    await _userManager.AddToRoleAsync(user, "User");

    var token = await _userManager.GenerateEmailConfirmationTokenAsync(user);
    var callbackurl = Url.RouteUrl("ConfirmEmail", new { userId = user.Id, token = token }, protocol: Request.Scheme);
    var message = new Message(
              new string[] { model.Email },
              Messages.Email_Confirmation,
               Messages.Email_CreateUser_Body + "<a href=\"" + callbackurl + "\">link</a>"
            );

    _emailSender.SendEmail(message);

    return Ok();
}

以上代码'callbackurl'return无效。我尝试了其他创建 url 的方法,但它不起作用。

在此先感谢您的帮助

我找到了根本原因,是因为你缺少路由配置。

在 .net6 中,program.cs

...
app.MapControllers();

// add this code
app.MapControllerRoute(
    name: "ConfirmEmail",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

这只是我的测试代码,我在本地重现了这个问题,我也遇到了这个问题,添加app.MapControllerRoute后就可以了。