【问题标题】:Visual Studio don't call Application_End on DebugVisual Studio 不会在调试时调用 Application_End
【发布时间】:2011-08-31 04:16:49
【问题描述】:

我在 Application_Start 和 Application_End (global.asax) 中实现了一些代码。 当我启动 ASP.NET Developer Server 时,Application_Start 运行正常。 当我更改 web.config 文件时,会再次调用 Application_Start 方法,但从不调用 Application_End。

有人知道如何在第二次调用 Application_Start 之前强制 Application_End 运行

【问题讨论】:

  • 你希望它什么时候被调用?
  • @Oded 在我更改 web.config 并保存后。
  • 只有当我在事件中添加复杂代码时才会出现问题。如果我只是添加一些 Trace 事件会被正确调用。

标签: asp.net


【解决方案1】:

Application_End 没有被调用,还是 Application_End 中的断点没有被命中?

应用程序池停止时调用Application_End。

当您进行调试时,您将附加到应用程序池进程。

可能发生的情况是调试器在调用 Application_End 之前失去了与应用程序池的联系,因此您没有遇到断点。

【讨论】:

  • 就像我在一条评论中所说,这个问题很奇怪。当我在 Start 和 End 事件中添加我的代码(打开套接字等)时,仅调用一次 Start 事件。当我只添加一个 Trace.WriteLine() 并保存时,web.config、End 和 Start 事件被正常调用。
  • 那么问题是你的复杂代码中有什么。尝试一次将它放入几行,看看它何时停止工作。
  • 我打开了一些监听器和套接字。但是当我保存 web.config 文件时,没有人使用套接字。问题是,VS什么时候决定调用Applicaton_Start?
  • Application_Start 在应用程序池启动时运行
【解决方案2】:

我的代码在 Application_Start 中打开了一个服务器套接字,因此 Visual Studio 无法在不关闭它的情况下重新启动我的应用程序。 为了安全 VS 不要重新启动我的应用程序。

VS 仅在知道没有人受到影响时才调用 Application_End。 在我的情况下,我可以使用套接字来发送或接收数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多