【问题标题】:ASP.Net MVC 3 Broken RoutingASP.Net MVC 3 损坏的路由
【发布时间】:2013-06-02 17:22:16
【问题描述】:

我的网站使用以下路线,但我需要创建一个不需要 DB 参数的新版本网站。我删除了 DB 部分,并发布到一个新的 IIS 虚拟目录,它只是 加载。它永远不会停止加载。

这是之前的路线:

routes.MapRoute(
    "Default", // Route name
    "{db}/{controller}/{action}/{id}", // URL with parameters
    new { db = "Home", controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

接下来是:

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

这是我在 Global.asax.cs 中唯一更改的内容。在我的控制器中,我从方法中删除了参数:public ActionResult Index(string db) 变为 public ActionResult Index()

在 Cassini 中一切都很好(我认为它被称为,在 VS 2012 中调试时的本地托管)。但是,当我部署到网络服务器时,它会无限加载。

有什么想法吗?

编辑:即使我的 /Home/Index 如下,它仍然会永远加载:

    [HttpGet]
    public string Index()
    {
        return "Hello, World!";
        //var dc = BuildDC();
        //ViewBag.Title = "Log in";

        //// Check for cookie that stores Booth Number and Vendors
        //if (HttpContext.Request.Cookies["BoothNumber"] != null && HttpContext.Request.Cookies["Vendors"] != null)
        //{
        //    // We have cookie. Resume session, then.
        //    Session["BoothNumber"] = HttpContext.Request.Cookies["BoothNumber"];
        //    Session["Vendors"] = HttpContext.Request.Cookies["Vendors"];

        //    return RedirectToAction("Login", "Show");
        //}
        //else
        //{
        //    // We no have cookie. Let's do setup process, then.
        //    return RedirectToAction("Setup", "Home");
        //}
    }

重要的区别是,如果我在 VS2012 中调试,它运行良好。但是,当我部署时,它会永远加载。我也觉得这不仅仅是一个 IIS 问题,因为当我改变路线时——我打破了它。谢谢!

【问题讨论】:

  • 那么,您的索引页是做什么的?这可能就是问题所在,而您还没有向我们展示。另外,你们还有其他路线吗?
  • @MystereMan -- 查看索引方法的编辑。谢谢!

标签: c# asp.net-mvc asp.net-mvc-3 routes


【解决方案1】:

你的路线很好。 HomeController 上的 Index 方法很可能是这样的:无限执行某些操作,无限重定向到同一路由,或者同步运行长时间运行的外部调用,例如需要几分钟的 DB 选择。

将其分解为基本情况,让您的 Index 方法简单地返回一个显示“Hello World”的视图,然后从那里开始。

【讨论】:

  • 我编辑了我的 /Home/Index 方法以返回一个字符串,上面写着“Hello, World!”调试时效果很好。但是,在部署时根本没有。仍然是无限的负载。还有什么建议吗?
  • 不要发布到 IIS 虚拟目录,而是尝试发布到 IIS 中的新站点并停止旧站点,作为测试。
  • 另一种选择是为 Home/Index 插入更具体的路线,看看是否可行/您会得到 404 / 等等。
  • 我将此答案标记为正确,因为它引导我找到答案。真正的答案是我的 IIS 行为不端。我不能确切地说如何,但是在一些其他的事情没有工作之后,我重新启动了整个服务器并且它工作了。谢谢!
猜你喜欢
  • 2013-05-07
  • 1970-01-01
  • 1970-01-01
  • 2011-08-11
  • 1970-01-01
  • 2011-08-31
  • 2011-08-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多