确认电子邮件页面包含:
public async Task<IActionResult> OnGetAsync(string userId, string code)
{
if (userId == null || code == null)
{
return RedirectToPage("/Index"); // <----------error
}
var user = await _userManager.FindByIdAsync(userId);
if (user == null)
{
return NotFound($"Unable to load user with ID '{userId}'.");
}
code = Encoding.UTF8.GetString(WebEncoders.Base64UrlDecode(code));
var result = await _userManager.ConfirmEmailAsync(user, code);
StatusMessage = result.Succeeded ? "Thank you for confirming your email." : "Error confirming your email.";
return Page();
}
但是当我测试它的空参数时,它会尝试重定向到页面 返回重定向到页面("/索引"(;
它会生成异常:
处理请求时发生未处理的异常。 无效操作异常:没有名为"/Index"的页面与提供的页面匹配 值
如何重定向到主页?
如果页面位于不同的文件夹中,则以这种方式工作
return Redirect("~/");
RedirectToPage()
返回一个IActionResult
,该通过提供Razor 页面的路径将 HTTP 重定向到指定的路由。Razor 页面是Pages
文件夹中的.cshtml
文件。
如果使用的是 Blazor,则可能使用的是它附带的客户端路由器。在这种情况下,只有一个 Razor 页面_Host.cshtml
它将充当 Blazor 应用程序的主要入口点。
因此,您可以做的是重定向到/_Host
尽管我不建议这样做。相反,只是重定向到应用程序根目录,而不询问服务器端端点路由器路由是什么,可能是最好的主意:
return LocalRedirect("/");
在Blazor中,您应该使用Microsoft.AspNetCore.Components.NavigationManager
.
@inject NavigationManager NavigationManager
if (userId == null || code == null)
{
NavigationManager.NavigateTo("/Index"); // <----------error
}