Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何在不触发应用程序启动事件的情况下启动aspnet_wp.exe_Asp.net_Web Services_Debugging_Global Asax - Fatal编程技术网

Asp.net 如何在不触发应用程序启动事件的情况下启动aspnet_wp.exe

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服务(WindowsXPSP3,VS2008,ASP.NET2,VB.NET)

对于大多数情况,如果asp.net工作进程已经加载,我可以启动调用web服务的Windows窗体,在Visual Studio中附加到aspnet_wp.exe,然后根据我的心意进行调试,但是在global.asax中捕获应用程序启动事件是一件痛苦的事情

如果重置IIS,在应用程序启动事件全部结束之前,当然没有要附加的进程

我发现的唯一方法是创建一个单独的aspx页面,将其设置为起始页面,然后运行该页面-然后我可以在应用程序启动事件中断时停止,但必须维护一个本质上只是测试存根的页面,这很麻烦

有没有更整洁一点的主意?有点像“一开始就连接到流程”

当然,更好的做法是不必显式地附加到aspnet_wp.exe,以便能够调试web服务,但我也没有找到这样做的方法


谢谢您的建议。

尝试将其粘贴到应用程序启动事件中,每次都会触发调试器。完成后一定要把它拿出来:-)

或者更好的是,在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