Url.Action возвращает ноль - PullRequest
       5

Url.Action возвращает ноль

0 голосов
/ 10 марта 2020

Я пытаюсь создать ссылку для подтверждения электронной почты, используя asp. net core 3. После генерации токена генерация ссылки verifyEmail с этим кодом всегда возвращает ноль.

var token = await _userManager.GenerateEmailConfirmationTokenAsync(user);
            var confirmationLink = Url.Action(
                "ConfirmEmail",
                "Users",
                new { userId = user.Id, token }, protocol: Request.Scheme
                );

Это проект net core 3 web api № mvc. При запуске конфигурация должна использовать: app.UseRouting ().

Что я мог сделать неправильно в приведенном выше и почему он всегда возвращает ноль. Что мне нужно для удовлетворения метода, чтобы он возвращал правильное ожидаемое значение?

Ответы [ 2 ]

4 голосов
/ 11 марта 2020

пытается создать ссылку для подтверждения электронной почты с использованием asp. net core 3. После генерации токена генерация ссылки verifyEmail с этим кодом всегда возвращает ноль.

В эту документацию , вы можете найти:

Generating a URI for an invalid route (a controller/action or page that doesn't 

exist) will produce an empty string under endpoint routing instead of producing 

an invalid URI.
1 голос
/ 12 марта 2020

Чтобы ответить на мой вопрос, основываясь на отзывах и ответах, я смог еще немного покопаться в том, чего мне не хватало. Приведенная ниже реализация решила мою проблему, и я смог сгенерировать ссылку для подтверждения по электронной почте.

Ниже приведена реализация:

var confirmationLink = Url.Action(nameof(ConfirmEmail), "Users", new { token, email = user.Email }, Request.Scheme);

Передал метод "ConfirmEmail" и оператор nameof (). как настройка электронной почты пользователя. Не уверен, что происходит в фоновом режиме со всей этой реализацией, но сохранит это на следующий день.

Подтвердите метод EMail:

[HttpGet]
public async Task<IActionResult> ConfirmEmail(string token, string email)
{
     var user = await _userManager.FindByEmailAsync(email);
     // More logic....

     var result = await _userManager.ConfirmEmailAsync(user, token);
     // More logic.... return whether success or failure
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...