Tom*_*han 68 debugging asp.net-mvc compilation
我目前在我的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);
}
Run Code Online (Sandbox Code Playgroud)
路由调试器 ......
当我点击时F5,应用程序启动,除非我有一个Index.aspx在~/Views/Home/文件夹中命名的视图,我得到"查看丢失"错误消息,虽然我已重新定义默认路由并删除了HomeController.我希望得到路由调试器,如果不是,那至少是一个请求~/Views/Arrangement/Index.aspx.调试时永远不会遇到
断点RegisterRoutes(Routetable.Routes);.
我已经尝试过构建,重建,重新启动VS,清理,重建等等,但似乎没有任何工作.为什么应用程序不运行当前版本的代码?
Vis*_*eth 107
我在forums.asp.net上找到了以下答案:
您使用IIS7作为服务器还是内置Web服务器?我注意到在使用IIS7时如果启动调试器,让一个页面出现,然后在调试器仍在运行时更改Global.asax(标记文件,而不是代码隐藏),然后刷新页面,Application_Start中的断点将是击中.
我认为正在发生的事情是按下"播放",VS只是启动进程,然后附加到它,但是当它附加到它时,启动事件已经运行.通过更改Global.asax,您可以重新启动应用程序,并且由于调试器已经连接,您可以访问断点.不是一个很好的解决方案,但似乎有效.
多数民众赞成在我的情况下发生了什么.
Jot*_*aBe 25
添加System.Diagnostics.Debugger.Break();到Application_Start().
这将迫使断点.
这行应该被注释掉,以避免断点被happern并#ifdef debug确保永远不会生产.
Pau*_*zke 13
问题是Application_Start()首先触发调试器附加的触发器.
所以我们的目标是做一些Application_Start()在它仍然运行时会再次触发的事情.出于调试目的,只需像通常那样运行调试器然后编辑(例如添加换行符)并保存web.config文件.
我发现了问题:
这个MVC应用程序是一个更大的解决方案的一部分,我曾在其中设置了另一个项目来构建x86环境(我正在运行x64).当我这样做时,显然所有其他项目 - 甚至是后来添加的项目 - 都没有建立起来Ctrl+Shift+B,我想这就是为什么调试器没有达到我的断点.
解:
进入解决方案构建属性(右键单击Solution,选择属性,然后选择左侧菜单上的Build),并选中列表中项目名称旁边的Build复选框.
我今天遇到同样的问题,并且正在使用本地IIS。
我相信这是由于页面加载方式引起的。您需要做的就是在Application_Start中放置一个断点。运行该应用程序(在我的情况下,它进入了Login Screen),然后转到web.config。编辑它-添加一些空格。然后在浏览器中刷新。这将在Application_Start上达到断点。
| 归档时间: |
|
| 查看次数: |
47397 次 |
| 最近记录: |