Visual Studio可以在新的调试会话中重新启动IIS Express吗?

Mat*_*int 16 asp.net debugging visual-studio iis-express

我有一个ASP.Net应用程序,它在Global.asax中的Application_Start期间执行一些数据库初始化.我正在使用IIS Express来调试应用程序.

我发现如果我停止调试,清除数据库,然后重新启动,则不会调用Application_Start代码,并且我的数据库未正确初始化,因此我的应用程序失败.这是因为IIS Express实例在调试停止后仍在运行.Visual Studio似乎附加到现有进程,而不是重新启动它.

有没有办法更改此行为,以便启动新的调试会话始终重新启动IIS Express中的应用程序进程(或重置常规IIS中的应用程序池)?

或者,有没有办法强制IIS Express在调试会话结束时关闭?

我确实发现,如果我在项目设置中从Web对话框中选中"启用编辑并继续",则在调试结束时会产生停止IIS Express的副作用.但我不确定是否只是为了停止IIS Express而引入Edit and Continue的副作用.当然有更好的方法吗?

不确定是否重要,但这是VS2012.

low*_*ign 19

不幸的是,通过配置无法实现.我可能会向你提出另一个技巧,但是由你来决定它是否比你的更好:)

您可以创建一个后期构建事件,该事件会更改web.config文件的时间戳.我使用了http://www.stevemiller.net/apps/上的touch.exe工具.您还需要将"运行构建后事件"设置为"始终".因此,您的"构建事件"配置可能如下所示:

在此输入图像描述

无论何时启动调试器,都会设置此选项,web.config时间戳会在第一次请求时更新,导致应用程序重新启动(应用程序appdomain重新加载) - 但此时您已经附加到此过程,因此您的Application_事件断点应该可以正常工作.


dst*_*stj 6

您可以使用Powershell单线程来避免依赖外部应用程序:

powershell -NoProfile -Command (Get-Item "<path>\Web.config").lastwritetime=(Get-Date)

原创灵感来自这里 ......