gpt4 book ai didi

c# - 重定向到区域总是给出 404 或错误的重定向

转载 作者:太空宇宙 更新时间:2023-11-03 21:08:59 25 4
gpt4 key购买 nike

我正在尝试制作一个应用程序,其中包含一个区域,您只有在登录后才能进入该区域。

enter image description here

出于某种原因,当我在登录后重定向到我的区域时失败。导致以下路线生成

 var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: false);
if (result.Succeeded)
{
_logger.LogInformation(1, "User logged in.");
return RedirectToAction("Index", "Home", new { area = "Dashboard" });
}

重定向的路线: http://localhost:23490/Account/Login?ReturnUrl=%2FDashboard%2FHome

如果我直接浏览链接(像这样)http://localhost:23490/Dashboard/Home/Index

我得到一个 404

我试图访问的 Controller 是这样定义的

  //[Authorize]
[Area("Dashboard")]
[Route("Dashboard/[controller]")]
public class HomeController : Controller
{
// GET: Dashboard
[HttpGet]
public ActionResult Index()
{
return View();
}

我检查了我能找到的关于这个主题的所有内容,但由于这是非常新的,所以没有太多关于这个的信息。

我尝试过的

  • 检查 View 和 Controller 是否定义正确,它们是
  • 检查路由是否正确,我觉得是这样

            app.UseMvc(routes =>
    {
    routes.MapRoute(name: "areaRoute",
    template: "{area:exists}/{controller=Home}/{action=Index}");

    routes.MapRoute(
    name: "default",
    template: "{controller=Route}/{action=Index}/{id?}");
    });
  • 尝试为操作创建自定义重定向(失败)

我希望有人能在这个话题上帮助我。谢谢!

最佳答案

为了使您的示例工作,您应该标记 [HttpGet("Index")] 您的 Index 方法

[Area("Dashboard")]
[Route("Dashboard/[controller]")]
public class HomeController : Controller
{
// GET: Dashboard
[HttpGet("Index")]
public ActionResult Index()
{
return View();
}

所以这里您的 HomeController 以 RESTFUL 方式工作,因此您可以使用 public IActionResult Get()[HttpPost] public IActionResult Post()。如果这是你想要的,你可以用更通用的方式实现它

[Area("Dashboard")]
[Route("[area]/[controller]")]
public class HomeController : Controller
{
// GET: Dashboard
[HttpGet("Index")]
public ActionResult Index()
{
return View();
}

如果你不想让你的仪表板使用 RESTFUL,你应该删除 [HttpGet("Index")] 并添加 [action] 到你的 Controller 属性,所以如果像这样

[Area("Dashboard")]
[Route("[area]/[controller]/[action]")]
public class HomeController : Controller
{
// GET: Dashboard
public ActionResult Index()
{
return View();
}

如果此套件符合您的目的,您可以完全省略 [Route([area]/[controller]/[action]")],因为这是默认约定。

关于c# - 重定向到区域总是给出 404 或错误的重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39036427/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com