首页 > 解决方案 > .NET Core MVC 2.1 中 RedirectToAction 的奇怪行为

问题描述

我在同一个解决方案中有 2 个项目。尝试在成功登录重定向页面上进行更改时,我尝试了 redirectToAction。(只是为了清楚下面的代码适用于 1 个项目,但不适用于另一个)

if (result.Succeeded)
{
    _logger.LogInformation("User logged in.");
    //return LocalRedirect(returnUrl);
    return RedirectToAction("Index", "ControllerName");
 }

所以这是登录的链接和重定向的链接

https://localhost:44343/Identity/Account/Login

https://localhost:44343/ControllerName

但是,当在另一个项目中做完全相同的事情时,它似乎不起作用。这让我感到困惑,因为据我所知,项目配置是相同的。

https://localhost:44343/Identity/Account/Login

https://localhost:44343/Identity/ControllerName

编辑:这就是问题所在。^ 它引用了一个不存在的页面。不知何故,它在 1 个项目中运行良好,但我必须在第二个项目中添加一个额外的区域参数才能使其工作。

最终,经过一番挖掘和参考这篇 文章,我修改了代码以包含新区域。

{
    _logger.LogInformation("User logged in.");
    //return LocalRedirect(returnUrl);
    return RedirectToAction("Index", "Competitions", new { area = "" });
}

有好心人能解释一下为什么会这样吗?非常感谢!

项目 1 中的 RouteConfig:

app.UseMvc(routes =>
{
    routes.MapRoute(
    name: "default",
    template: "{controller=Home}/{action=Index}/{id?}");
});

项目 2 中的 RouteConfig:

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

    routes.MapRoute(
    name: "default",
    template: "{controller=Home}/{action=Index}/{id?}");
});

标签: c#asp.net-coreasp.net-core-mvc

解决方案


推荐阅读