代码之家  ›  专栏  ›  技术社区  ›  ChrisA

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

  •  1
  • ChrisA  · 技术社区  · 16 年前

    我正在尝试调试一个web服务(WindowsXPSP3,VS2008,ASP.NET2,VB.NET)。

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

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

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

    当然,更好的办法是不必附加 明确地 为了能够调试web服务,我需要访问aspnet_wp.exe,但我也没有找到这样做的方法。

    谢谢你的建议。

    1 回复  |  直到 16 年前
        1
  •  3
  •   brendan    16 年前

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

    System.Diagnostics.Debugger.Launch()
    

    或者更好的是,在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把它包起来,它有点 因此,测试/生产变得非常困难