当我调试ASP.NETMVC应用程序时,为什么Application_start()事件不会触发?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (62)

我目前在我的Global.asax.cs文件中有以下例程:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.MapRoute(
        "Default",                                          
        "{controller}/{action}/{id}",                       
        new { controller = "Arrangement", action = "Index", id = "" }
    );
}

protected void Application_Start()
{
    RegisterRoutes(RouteTable.Routes);
    // Debugs the routes with Phil Haacks routing debugger (link below)
    RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);
}

路由调试器 ...

当我点击时F5,应用程序启动,除非我有一个Index.aspx~/Views/Home/文件夹中命名的视图,否则我会看到“View missing”错误消息,虽然我已经重新定义了默认路径并删除了该路径HomeController。我希望得到路由调试器,如果没有,至少有一个请求~/Views/Arrangement/Index.aspx。调试时从不会 触发断点RegisterRoutes(Routetable.Routes);

我尝试过建设,重建,重新启动VS,清理,重建等,但似乎没有任何工作。为什么应用程序不运行代码的当前版本?

提问于
用户回答回答于

一个添加System.Diagnostics.Debugger.Break();Application_Start()。 这将强制一个断点。

这条线应该注释掉,以避免发生断点,并#ifdef debug确保永远不会生产。

用户回答回答于

在forums.asp.net上找到了以下答案:

你使用IIS7作为服务器还是内置的Web服务器?我注意到在使用IIS7时,如果启动调试器,让页面出现,然后在调试器仍在运行时更改Global.asax(标记文件,而不是代码隐藏),然后刷新页面,Application_Start中的断点将为击中。 我认为发生的事情是按下“玩”,VS只是启动过程,然后附加到它,但是当它附着到它时,启动事件已经运行。通过更改Global.asax,您可以重新启动应用程序,并且由于调试器已经连接,可以点击断点。不是一个很好的解决方案,但它似乎工作。

这就是我的情况。

扫码关注云+社区