MVC RouteProvider / URL Mismatch。我错过了什么?

时间:2014-09-04 14:35:54

标签: c# asp.net-mvc-4

我很抱歉这样一个基本问题,但我的眼球并没有看到我所缺少的东西。

我的路线提供者:

routes.MapRoute("SSOLogin", "SSOlogin/{userId}/{userPwd}/", 
            new { controller = "Users", action = "SSOLogin" }, 
            new { userId = @"\d+", userPwd = @"\d+" }, 
            new[] { "MyController" });

我原本希望这个网址能够点击我的控制器,而是说找不到页面。

http://localhost:15536/SSOlogin/1/2

自从与MVC合作以来已经过了几个月......显然我的大脑冲刷了所有MVC知识。

由于

2 个答案:

答案 0 :(得分:1)

如果您没有任何拼写错误(例如在控制器名称或命名空间中),我能想到的唯一问题是路由的顺序。如果你有一个像

这样的defaut路线
     routes.MapRoute(
         name: "Default",
         url: "{controller}/{action}/{id}",
         defaults: new { controller = "Default", action = "Index", id = UrlParameter.Optional }
     );

您必须将规则置于之前,以确保正确分派请求。否则,将应用默认规则,导致请求失败。

答案 1 :(得分:1)

对不起,直到今天早上才回到这里。所以......我觉得自己真的很愚蠢,但是因为我在开发当天吸了几个小时,所以我想发帖以防万一。所以排序没有错,而是使用了与url相关的实际网址。

来自OP的

你会看到我定义为url:

SSOlogin/{userId}/{userPwd}/

注意 {userPwd}之后的斜杠。

现在看看我期待工作的网址:

http://localhost:15536/SSOlogin/1/2

没有尾随斜线因此不会被发现。的 DUH !!

因此从url定义中删除了尾部斜杠,现在它按预期工作。

谢谢大家......这很有帮助,因为您的输入让我专注于路线定义。