如何在没有硬编码的情况下将 ASP.NET MVC Url.Action 指向 Angular 路由?

How to point ASP.NET MVC Url.Action to Angular route without hardcoding?

我的 Angular (ng app) 前端在 localhost:4200
上运行 我的 MVC 后端在 localhost:5000

上运行

我正在配置电子邮件确认。
电子邮件到达,但现在我希望该电子邮件中的 link 指向我的前端,以便我可以相应地处理确认。
目前,电子邮件 (callbackUrl) 中的 link 为空,这是因为我指向代码中不存在的路由(这也使得 link 不可点击).

private async Task SendEmailConfirmation(User user, CreateUserModel model)
{
  string token = await _userManager.GenerateEmailConfirmationTokenAsync(user);
  var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = token }, protocol: HttpContext.Request.Scheme);

  await _emailSender.SendEmailAsync(model.Email, "Confirm your account", "Please confirm your e-mail by clicking this link: <a href=\"" + callbackUrl + "\">click here</a>");
}

有没有办法让 callbackUrl 指向 localhost:4200/userId/EmailConfirmation 例如? 我现在只是对 link 进行了硬编码,但我不确定这是否被认为是一种不好的做法?

(硬编码 link:)

  var callbackUrl = "http://localhost:4200/";

如有必要,我可以 post 更多代码。

一个更友好的方法是将激活码发送到用户邮箱,并要求他在同一个注册表中输入,这样就不需要单独的页面来进行确认,这将是就像用户正在确认他的手机号一样。

如果您必须按照当前的方式进行操作,那么您可以使用 MVC 视图来处理此页面,并且它将完全独立于 Angular 应用程序。在您的电子邮件中,您会将 link 放入 MVC 操作中,该操作将检查用户是否提供了正确的激活码。用户看到该页面后,向 localhost:4200 上的 Angular 应用程序提供 link 将加载 SPA