【发布时间】:2016-08-04 19:48:37
【问题描述】:
我正在尝试在我现有的 MVC5 应用程序中实现一些域名逻辑。我遇到的问题是,如果我尝试使用 Route 中的自定义子类,它不尊重命名空间字段并引发错误,因为我有 2 个不同的用户控制器。
作为一个控件,它工作得非常好:
routes.MapRoute("Login",
"login/",
new { controller = "User", action = "Login" },
new[] { "Quotes.Web.Controllers" });
我的 DomainRoute 类继承自 Route 并且只是添加了一个 Domain 属性。这是相关的构造函数:
public DomainRoute(string domain, string url, object defaults, string[] namespaces = null)
: base(url, new RouteValueDictionary(defaults), new MvcRouteHandler())
{
Domain = domain;
DataTokens = new RouteValueDictionary {["Namespaces"] = namespaces};
}
我像这样注册它:
var loginRoute = new DomainRoute(
domain,
"login/",
new { controller = "User", action = "Login" },
new[] { "Quotes.Web.Controllers" });
routes.Add("Login", loginRoute);
DataTokens 在工作版本和我的损坏版本之间看起来相同,但它似乎忽略了我的 DomainRoute 有一个命名空间条目的事实
找到了多个与名为“用户”的控制器匹配的类型。如果为该请求提供服务的路由(“login/”)未指定命名空间来搜索与请求匹配的控制器,则可能会发生这种情况。如果是这种情况,请通过调用带有“namespaces”参数的“MapRoute”方法的重载来注册此路由。
我错过了什么?
【问题讨论】:
标签: asp.net-mvc-5 routing