Asp.net 添加区域后的路由问题

Asp.net 添加区域后的路由问题,asp.net,asp.net-mvc,asp.net-mvc-routing,Asp.net,Asp.net Mvc,Asp.net Mvc Routing,我曾经建立过一个多语言网站 我做了一些改变,为了一些SEO目的,在URL中添加了文化 现在我有一个如下所示的BaseController,每个控制器都是从这个控制器中派生出来的 public class BaseController : Controller { protected override IAsyncResult BeginExecuteCore(AsyncCallback callback, object state) { string cultur

我曾经建立过一个多语言网站

我做了一些改变,为了一些SEO目的,在URL中添加了文化

现在我有一个如下所示的BaseController,每个控制器都是从这个控制器中派生出来的

public class BaseController : Controller
{
    protected override IAsyncResult BeginExecuteCore(AsyncCallback callback, object state)
    {
        string cultureName = RouteData.Values["culture"] as string;

        if (string.IsNullOrEmpty(cultureName))
        {
            HttpCookie cultureCookie = Request.Cookies["_culture_"];
            if (cultureCookie != null)
                cultureName = cultureCookie.Value;
            else
                cultureName = CultureHelper.GetDefaultCulture();
        }

        cultureName = CultureHelper.GetImplementedCulture(cultureName);

        if (RouteData.Values["culture"] as string != cultureName)
        {
            RouteData.Values["culture"] = cultureName.ToLowerInvariant();
            Response.RedirectToRoute(RouteData.Values);
        }

        Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(cultureName);
        Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;


        return base.BeginExecuteCore(callback, state);
    }
}
这是路由配置:

routes.MapRoute(
            name: "WithCulture",
            url: "{culture}/{controller}/{action}/{id}",
            defaults: new { culture = String.Empty, controller = "Home", action = "Index", id = UrlParameter.Optional },
            constraints: new { culture = "[a-z]{2}" }
        );

routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { culture = String.Empty, controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
它(似乎)运转良好。我的意思是我从以下链接重定向:

/
/Home
为此:

/fr
/fr/Home
但当我添加一个区域(例如管理器)时。 在这一点上,我得到一些URL的错误。例如:

/
/Home/
已重定向到此URL

/Manager/Home?culture=en

我错过了什么?

您是否尝试将
namaspaces
参数添加到
maprote
方法中?例如,
namespaces:new[]{“someNamespace.Controllers”}
我添加了namespaces参数,但存在相同的问题。您是否也在
…AreaRegistration
中添加了它?是的<代码>名称空间:新建[]{“something.Areas.Manager.Controllers”}您是否尝试将
namaspaces
参数添加到
MapRoute
方法中?例如,
namespaces:new[]{“someNamespace.Controllers”}
我添加了namespaces参数,但存在相同的问题。您是否也在
…AreaRegistration
中添加了它?是的<代码>名称空间:新建[]{“something.Areas.Manager.Controllers”}