MVC 5路由添加额外斜杠

时间:2014-06-06 19:21:06

标签: asp.net-mvc asp.net-mvc-routing

我在iis 7.5上有一个mvc 5应用程序,它有一个链接,当应用程序作为ip地址引用时,它可以正常工作,但不能作为子域引用。所以xxx.xxx.x.xx在subdomain.mydomain.com失败时有效。只有这个链接,页面上的9个左右就会因为这个怪癖而失败。

除一个链接外,所有链接都有效。当我将鼠标悬停在链接上时,状态栏显示http://subdomain.mydomain.com/Projects,单击时会在工作时列出项目 - 如路由配置中所示。我添加了配置项来强制路由,但它失败了。

它在共享布局中定义为

    <li><a href="@Url.Action("Index", "Projects")" @SiteMainMenuHelper.CurrentItem(ViewBag.SiteMainMenu, SiteMainMenu.Projects) data-icon="&#xe60f;">Projects</a></li>

路由

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        ////routes.LowercaseUrls = true;

        // I created this first route to force the correct action but it does not work
        routes.MapRoute(
            "Projects",
            "Projects",
            new { controller = "Projects", action = "Index" });

        routes.MapRoute(
            "user-activation",
            "user/activate/{token}",
            new { controller = "user", action = "activate" });

        routes.MapRoute(
            "password-reset",
            "password/reset/{token}",
            new { controller = "password", action = "reset" });

        routes.MapRoute(
            "Default",
            "{controller}/{action}/{id}",
            new { controller = "Home", action = "Index", id = UrlParameter.Optional });


    }

但是,当子域是应用程序的主机时,它会落在这个URL上: http://subdomain.mydomain.com/Projects/#/

但应该是 http://subdomain.mydomain.com/Projects#/

我无法弄清楚额外/即将到来的地方。任何关于如何修复的线索或方向都将受到赞赏 - 特别是考虑到其他一切都有效。我在调试器中查看了RouteTable并且没有看到任何冲突 - 但我可能没有正确查看表。

2 个答案:

答案 0 :(得分:1)

第一条路线没有为动作指定任何地方,你应该让它显示

map.Routes(
   "Projects",
   "Projects/{action}",
   new { controller="Projects", action="Index"}
);

...或

map.Routes(
   "Projects",
   "Projects",
   new {controller="Projects", action = UrlParameter.Optional}
);

答案 1 :(得分:0)

以某种方式解决了这个问题。它可能是由于dns和iis配置问题,但没有令人满意的解释。