You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Asp.Net Core MVC控制器重定向Razor登录页URL异常问题排查

解决Asp.Net Core MVC重定向到Identity登录页的路径问题

你的问题出在RedirectToAction的用法上,这个方法是用来跳转控制器动作的,你直接传入Identity/Account/Login这种路径,框架会把它当成当前控制器下的一个动作名,所以才会带上MyController前缀。

给你两个靠谱的解决方法:

方法1:用Redirect直接指定路径

直接用Redirect方法传入根相对路径,它会直接跳转到指定URL,不会拼接当前控制器:

[HttpPost]
public IActionResult SecretQuestionSetup(SecretQuestionVM secretQuestionVM)
{
   if (ModelState.IsValid)
   {
      // 保存数据到数据库的代码
   }

   return Redirect("/Identity/Account/Login");
}

方法2:用RedirectToPage适配Razor页面

因为Identity的登录页是Razor页面,用RedirectToPage更贴合场景,需要指定Area和页面路径:

[HttpPost]
public IActionResult SecretQuestionSetup(SecretQuestionVM secretQuestionVM)
{
   if (ModelState.IsValid)
   {
      // 保存数据到数据库的代码
   }

   return RedirectToPage("/Account/Login", new { Area = "Identity" });
}

另外你之前在Program.cs里配置的LoginPath,是给Cookie认证中间件用的——当用户未授权访问需要登录的资源时,框架会自动跳转到这个路径,和你手动写的重定向逻辑没关系,所以改它解决不了当前问题。

内容的提问来源于stack exchange,提问作者Massey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 10:33:19