如何从控制器获取 Identity/Pages/Account/ConfirmEmail 的回调 URL?

Sto*_*pov 4 c# asp.net-core-mvc asp.net-core

我有一个场景,我想以与身份区域的注册页面(“身份/页面/帐户/注册”)相同的方式生成电子邮件确认 URL。我已经搭建了身份区域并可以访问其页面。

我需要从位于完全不同区域的控制器发生这种情况。我尝试做与 Register.cshtml.cs 类似的事情,但我不使用 Url.Page,而是使用 Url.Action (我们位于控制器内部,记得)。

问题是以下代码生成一个空字符串,这并不完全是我们想要的:

string confirmationLink = Url.Action("ConfirmEmail",
                        "Account", new
                        {
                            area = "Identity",
                            userid = viewModel.User.Id,
                            token = code
                        },
                        protocol: HttpContext.Request.Scheme);
Run Code Online (Sandbox Code Playgroud)

我在这里可能做错了什么?这是位于

/Areas/CompanyUsers/Controllers/HomeController.cs。

请不要评论从“随机”控制器生成此 url 的想法。我需要一种从已经经过身份验证的用户注册用户的方法(公司所有者用户必须能够将用户注册到应用程序中,而无需使用默认的身份方式来执行此操作。)。

Kir*_*kin 5

Url.Action用于生成操作的 URL ,但它ConfirmEmail是一个页面。用于Url.Page生成正确的 URL:

string confirmationLink = Url.Page(
    "/Account/ConfirmEmail",
    null, // handler
    new { area = "Identity", userid = viewModel.User.Id, token = code },
    Request.Scheme);
Run Code Online (Sandbox Code Playgroud)