我有一个ASP.Net应用程序,在Global.asax中的Application_Start期间执行一些数据库初始化.我正在使用IIS Express来调试应用程序.
我发现如果我停止调试,清除数据库,并重新启动,Application_Start代码不被调用,我的数据库没有被初始化正确,所以我的应用程序失败.这是因为IIS Express实例在调试停止后仍然运行.而不是重新启动它,Visual Studio似乎附加到现有的进程.
有没有办法改变这种行为,以便启动新的调试会话始终重新启动IIS Express中的应用程序进程(或在常规IIS中重置应用程序池)?
或者,是否有办法强制IIS Express在调试会话结束时关闭?
我确实发现,如果我在项目设置中从Web对话框中选中“启用编辑并继续”,那么在调试结束时它具有停止IIS Express的副作用.但我不知道我是否想要介绍编辑和继续的副作用,只是为了停止IIS Express.当然有更好的方法吗?
不确定是否重要,但这是VS2012.
解决方法
不幸的是,通过配置无法实现.我可能会提出你另一个伎俩,但是由你决定是否比你的更好:)
您可以创建一个修改后的事件来更改web.config文件的时间戳.我从http://www.stevemiller.net/apps/使用了一个touch.exe工具.您还需要将“运行后建立事件”设置为“始终”.因此,您的“构建事件”配置可能如下所示:
只要启动调试器,这个选项就被设置,web.config时间戳被更新,导致应用程序重新启动(应用程序appdomain重新加载)在第一个请求 – 但在这一点上,你已经附加到这个进程,所以你的Application_事件断点应该工作.