【问题标题】:How to start aspnet_wp.exe without firing Application_Start event如何在不触发 Application_Start 事件的情况下启动 aspnet_wp.exe
【发布时间】:2009-01-12 20:39:55
【问题描述】:

我正在尝试调试 Web 服务(Windows XP SP3、VS 2008、ASP.NET 2、VB.NET)。

对于大部分情况,如果asp.net工作进程已经加载,我可以启动调用web服务的windows窗体,在Visual Studio中附加到aspnet_wp.exe,然后调试到我心目中的内容,但捕捉global.asax 中的 Application Start 事件很痛苦。

如果我重置 IIS,当然没有进程可以附加到,直到应用程序启动事件结束。

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

对一些更整洁的东西有什么想法吗?有点像“一开始就附加到进程”。

当然,更好的是不必将显式附加到 aspnet_wp.exe 以便能够调试 Web 服务,但我还没有找到这样做的方法要么。

感谢您的任何建议。

【问题讨论】:

  • 你有什么理由不使用VS2008的内置Web服务器(Cassini)来调试Web服务吗?为此,我认为它是比 IIS 更自然的选择。
  • @Darin.. 这是一个想法......不,不是真的,除了对尽可能现实的测试环境和习惯的普遍偏好。我也确实在外部公开了 Web 服务,但没有理由不使用内置的进行测试。我试试,谢谢。

标签: asp.net web-services debugging global-asax


【解决方案1】:

尝试将其粘贴在您的应用程序启动事件中,它应该每次都会启动您的调试器。完成后请确保将其取出 :-)。

System.Diagnostics.Debugger.Launch()

或者更好的是,在 WebService 的 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 中,它有点 更安全(最终不会滑倒东西 对测试/生产造成如此灾难性的影响 环境)。 – 滑动屋规则

【讨论】:

  • 它肯定会启动调试器!谢谢你.. 我希望有一些不那么激烈的东西,但希望我不需要太频繁地调试 App_Start 事件,所以去掉这条线不会太麻烦。
  • 将其包装在#if DEBUG 中,这样会更安全一些(最终不会将如此灾难性的东西滑入测试/生产环境)。
猜你喜欢
  • 2016-06-23
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 2013-08-22
  • 1970-01-01
  • 1970-01-01
  • 2017-12-15
  • 1970-01-01
相关资源
最近更新 更多