gpt4 book ai didi

c# - 如何在 ASP.NET Core 中设置默认区域?

转载 作者:行者123 更新时间:2023-12-03 16:36:36 24 4
gpt4 key购买 nike

我在我的 ASP.NET Core 3.1 应用程序 (MVC) 中使用了区域。
现在我希望所有没有明确区域的请求默认转到“主要”区域。这是我目前设置端点路由的方式:

app.UseEndpoints(endpoints =>
{
// 1
endpoints.MapControllerRoute(
name: "area",
pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");

// 2
endpoints.MapAreaControllerRoute(
name: "default",
areaName: "Main",
pattern: "{area=Main}/{controller=Home}/{action=Index}/{id?}");
});
我的目标是:
如果请求 URL 包含现有区域名称,请使用路由 [1]。如果没有区域名称,则使用路由[2](默认为“Main”区域)。
我的问题:
  • 对“/main/admin”的请求工作正常。
  • 对“/admin”的请求导致 404。

  • 如何设置默认区域?
    好的,解决了。最后,这对我有用:
    app.UseEndpoints(endpoints =>
    {
    endpoints.MapControllerRoute(
    name: "default",
    pattern: "area:exists}/{controller=Home}/{action=Index}/{id?}");


    endpoints.MapAreaControllerRoute(
    name: "default",
    areaName: "Main",
    pattern: "{controller=Home}/{action=Index}/{id?}");
    });

    最佳答案

    有2种方式:

  • 如果不指定区域名称,它会找到ControllerAction区外。除了,
    重要区域应该在外面 Areas使其像您希望的那样正常(默认区域)。

  • enter image description here
        app.UseEndpoints(endpoints =>
    {

    // 1
    endpoints.MapControllerRoute(
    name: "area",
    pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");

    // 2
    endpoints.MapAreaControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

    });
  • 删除多余的 {area=Main}/在您的模式中
  • app.UseMvc(routes =>
    {
    routes.MapControllerRoute(
    name: "area",
    template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");

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

    请参阅以下线程以更好地理解

    ASP.NET Core 2 default route having areas

    关于c# - 如何在 ASP.NET Core 中设置默认区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60484710/

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