Asp.net 如何在不触发应用程序启动事件的情况下启动aspnet_wp.exe
我正在尝试调试一个web服务(WindowsXPSP3,VS2008,ASP.NET2,VB.NET) 对于大多数情况,如果asp.net工作进程已经加载,我可以启动调用web服务的Windows窗体,在Visual Studio中附加到aspnet_wp.exe,然后根据我的心意进行调试,但是在global.asax中捕获应用程序启动事件是一件痛苦的事情 如果重置IIS,在应用程序启动事件全部结束之前,当然没有要附加的进程 我发现的唯一方法是创建一个单独的aspx页面,将其设置为起始页面,然后运行该页面-然后我可以在应用程序启动事件中断时停止,但必须维护一个本质上只是测试存根的页面,这很麻烦 有没有更整洁一点的主意?有点像“一开始就连接到流程” 当然,更好的做法是不必显式地附加到aspnet_wp.exe,以便能够调试web服务,但我也没有找到这样做的方法Asp.net 如何在不触发应用程序启动事件的情况下启动aspnet_wp.exe,asp.net,web-services,debugging,global-asax,Asp.net,Web Services,Debugging,Global Asax,我正在尝试调试一个web服务(WindowsXPSP3,VS2008,ASP.NET2,VB.NET) 对于大多数情况,如果asp.net工作进程已经加载,我可以启动调用web服务的Windows窗体,在Visual Studio中附加到aspnet_wp.exe,然后根据我的心意进行调试,但是在global.asax中捕获应用程序启动事件是一件痛苦的事情 如果重置IIS,在应用程序启动事件全部结束之前,当然没有要附加的进程 我发现的唯一方法是创建一个单独的aspx页面,将其设置为起始页面,然后
谢谢您的建议。尝试将其粘贴到应用程序启动事件中,每次都会触发调试器。完成后一定要把它拿出来:-) 或者更好的是,在Web服务的OnStart中:
Protected Overrides Sub OnStart(ByVal args() As String)
' Add code here to start your service. This method should set things
' in motion so your service can do its work.
System.Diagnostics.Debugger.Launch()
End Sub
更新:将此评论添加到答案中,因为这是一个好主意:
用#if DEBUG把它包起来,它有点
更安全(不会滑倒东西)
因此,测试/生产变得非常困难
环境)。-幻灯片放映规则
您是否有任何理由不使用VS2008的内置web服务器(Cassini)调试web服务?我认为这是一个比IIS更自然的选择。@Darin。。这是一个想法。。。不,不是真的,除了对尽可能真实的测试环境和习惯的普遍偏好。我也在外部公开了web服务,但没有理由不使用内置服务进行测试。我会试试的,谢谢。它肯定会启动调试器!谢谢你。。我希望有一些不太激烈的东西,但希望我不需要太频繁地调试App#u Start事件,所以去掉这一行不会太麻烦。如果调试成功,它会更安全一些(不会在测试/生产环境中造成灾难性后果)。
Protected Overrides Sub OnStart(ByVal args() As String)
' Add code here to start your service. This method should set things
' in motion so your service can do its work.
System.Diagnostics.Debugger.Launch()
End Sub