gpt4 book ai didi

asp.net-mvc - 默认路由在 Asp.Net Core 中不起作用

转载 作者:行者123 更新时间:2023-12-04 09:43:32 24 4
gpt4 key购买 nike

我有以下 Controller & Action我想成为用户进入我的 webapp 时加载的第一个页面:

[Route("auth")]
public class AuthController : Controller
{
[Route("signin")]
public IActionResult SignIn(bool signInError)
{
}
}

我尝试在我的 app.UseMvc 中执行此操作像这样的选项:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=auth}/{action=signin}/");
});

但是,当我启动我的 web 应用程序时,它只是导航到 http://localhost:52608/ .

如果我输入 http://localhost:52608/auth/signin?ReturnUrl=%2F当用户启动 web 应用程序时,网页在我想要的页面上正确加载。

我的问题是,如何设置它以便在用户打开 web 应用程序后立即导航到此页面?

最佳答案

Mixed Routing It is perfectly valid to use convention-based routing for some controllers and actions and attribute routing for others. However, ASP.NET Core MVC does not allow for convention-based routes and attribute routing to exist on the same action. If an action uses attribute routing, no convention-based routes can map to that action. See the ASP.NET Core docs for more info.



More info about routing

因此,如果要使用属性路由,则无法在基于约定的路由中映射默认路径。

如果您需要在此 Controller 中使用属性路由,您可以在 web.conig 文件中添加重定向操作。
或者只是从该操作中删除属性路由,它会起作用:
public class AuthController : Controller
{
public IActionResult SignIn(bool signInError)
{
}
}

编辑:

最简单的解决方案:
添加具有重定向操作的新 Controller ,例如:
public class HomeController : Controller
{
public IActionResult Index()
{
return new RedirectToActionResult("SignIn", "Auth", new {signInError = false});
}
}

并将默认路由添加到此 Controller
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=home}/{action=index}/");
});

关于asp.net-mvc - 默认路由在 Asp.Net Core 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47831896/

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