【问题标题】:Global.asax Application_Start not firing when debugging, but fires in productionGlobal.asax Application_Start 在调试时不触发,但在生产中触发
【发布时间】:2016-09-19 04:27:31
【问题描述】:

我正在使用 Application_start 在 asp.net webforms 应用程序中设置我的路由。它工作正常,然后我在一台新机器上克隆了 repo,它停止工作。该事件永远不会触发,并且路线永远不会设置。所以我最终会遇到很多 404 错误。

我什至在事件中抛出异常以确保它不会触发并且从未抛出异常。

但是,当我发布应用程序时它可以工作。

【问题讨论】:

  • 你本地运行在哪个环境中?是 IIS 吗?
  • 开发机器上的 IIS Express 和发布服务器上安装的 IIS 可能会以不同的方式处理您的 repo 的某些重要部分。如果您再次遇到相同的错误,请将其发布在您的问题上,包括错误详细信息和异常输出(如果有)。
  • @sachin 来自 VS,它在 IIS express 中,当我在本地发布它时,它在 IIS7 上运行
  • @TetsuyaYamamoto 这很奇怪,没有例外。它就像 global.asax 不存在一样。
  • @Smeegs 所以你是说如果在 IIS7 上运行(在本地发布时)会调用它,但在使用 IISExpress 从 VS 运行时不会调用它?

标签: c# asp.net visual-studio webforms


【解决方案1】:

我建议您在从 Visual Studio 启动应用程序之前尝试手动停止 IISExpress

或者只是转到您的 Web 项目属性的 Web 部分,然后选中底部的 'Enable Edit and Continue'

当您选择编辑并继续时,我们会回收 ASP.Net Web 每次调试运行时的服务器进程(Edit & 继续功能工作)......这样虽然你会看到非常 您的性能略有下降,您仍然可以调试 你的 Application_Start() 方法……

这应该可以帮助您了解您遇到问题的原因:

这背后的原因是我们没有杀死 ASP.Net Web 服务器 每次调试运行后处理,因此 Application_Start() 是 不是每次都被解雇。我们这样做是有充分理由的……开始 ASP.Net Web 服务器进程是一项昂贵的任务,并且在大多数 每次调试后回收此过程的场景会产生不利影响 影响你的表现……如果你不想调试你的 Application_Start() 方法,那么您可能不需要 大部分时间进程重启并节省性能......

详细信息在下面链接的文章中:

https://blogs.msdn.microsoft.com/webdev/2007/12/13/workaround-debugging-global-aspx-cs-application_start-with-asp-net-web-server-within-visual-studio/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 2012-05-19
    相关资源
    最近更新 更多