【问题标题】:Why are the Global.asax events not firing in my ASP .NET website?为什么 Global.asax 事件没有在我的 ASP .NET 网站中触发?
【发布时间】:2010-11-04 22:02:42
【问题描述】:

我一直在针对内置 Web 开发服务器 Cassini 而不是针对 IIS 开发一个 ASP .NET 3.5 Web 应用程序。

在我的 Global.asax 文件中,在 Application_Start 事件处理程序中,我有一些代码记录了网站已启动的事实。这一切都适用于 Cassini。

自从使用 IIS6 将站点部署到测试服务器上的虚拟目录后,我发现没有写入任何日志条目,因此我得出结论,Application_Start 处理程序没有触发。

然后我尝试删除虚拟目录并在测试服务器上直接从网站的根目录运行该站点,但这没有任何区别 - 仍然没有应用程序启动的日志条目。

我知道无论我的部署环境如何,这些事件都应该触发,有没有人知道这里出了什么问题?

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    我遇到了类似的问题,我为此苦苦挣扎了好几天。 最初的问题是其他问题 - 未在应用程序的 EndRequest 处理程序中设置 cookie。 最后我以某种方式设法意识到,问题实际上是事件根本没有被触发。 花了一些时间才发现这一点,因为我的机器上一切正常。 但在生产服务器上 - 安静得像坟墓。

    我只是写这个,因为我真的希望至少能拯救一个人。

    问题的真正原因是生产服务器上缺少 global.asax 文件

    global.asax 文件存在于我的计算机上,因为开发环境位于那里。 我准备了一个部署 bat 文件,它从开发文件夹中复制文件,删除不必要的文件并制作一个包。 好吧 - global.asax 文件在该脚本中被标记为删除。 开始部署后,所有问题都消失了。

    希望我能帮上忙。

    【讨论】:

      【解决方案2】:

      如果您向您的应用发出请求,“Application_Start”会触发吗?我不相信它会在第一个请求发出之前启动。

      【讨论】:

      • 谢谢大卫,你很清楚这一点。我错误地假设 Application_Start 在(例如)编辑 web.config 或重置 IIS 后立即触发。但它会延迟到第一个请求。
      【解决方案3】:

      您的日志记录如何?您的日志记录组件是否可能未正确设置?要进行快速测试,请尝试在 Application_Start 中抛出异常,这将很快告诉您是否引发了事件。

      【讨论】:

      • 同意...试试这个。 Application_Start 肯定会触发 ;)
      • 正如 Andrew 所说:您的操作是基于错误的假设。更好的测试方法是让 Application_Start 设置一个由 Default.aspx 显示的全局变量。查看页面显示的内容。
      • @John - 我想你的建议没有我的那么激烈 :)
      • @Andrew:我决定调低我的音调。我打算建议重新启动系统,但决定在部分信任环境中可能不允许这样做。
      【解决方案4】:

      在您部署的环境中,您调用的是什么?我问的原因是因为如果您正在调用基于 WCF 的 Web 服务(以 .svc 结尾),那么 Applicaiton_Start 将不会触发,因为对 WCF 的调用没有通过 ASP.NET 管道。这不一定会与卡西尼号相提并论。

      【讨论】:

        【解决方案5】:

        您可能会遇到运行时异常,该异常发生在您的 .NET 代码甚至有机会运行之前。如果您查看事件查看器的应用程序日志,您可能会看到一些警告或错误,这些警告或错误会提示您了解正在发生的事情。

        【讨论】:

          【解决方案6】:

          当您在 Cassini 中开发时,您是在用户帐户下运行应用程序 - 可能是管理员。部署到 IIS 后,您(希望)在较低权限的帐户下运行。

          缺乏适当的权限可能是您的应用程序无法正常工作的原因 - 我会检查安全设置以写入日志(可能您正在写入日志文件?)。

          【讨论】:

            【解决方案7】:

            1) iisreset /stop
            2) 将发布的代码推送到iis虚拟目录的物理文件夹。
            3) iisreset /开始
            4) 发出网络请求

            在此之后仍然不确定。执行Thread.Sleep(60000); 并使用远程调试器附加到进程w3wp.exe imagename。
            同名的进程可能不止一个,但这个是托管代码,附加到多个进程也没有什么坏处。设置休眠后的断点。在一分钟的睡眠后逐步完成。

            【讨论】:

              【解决方案8】:

              我以为我遇到了类似的问题,在处理一些旧项目时,我的印象是 global.asax 没有运行,因为代码首先会构建我的身份验证控制器,但由于类未注册而失败(这部分发生在 global.asax 中)。

              原来是因为一个配置项。当我将 AuthenticationModule 声明移动到 web 配置中的处理程序部分时,它与 IIS express 配合得很好。

              基本上,由于一个配置项,另一段代码在 global.asax 之前执行,让我相信它不会被调用。

              【讨论】:

                【解决方案9】:

                我们尝试了很多东西。

                1. global.asax works on local computer but not after i publish to server
                2. Global.asax is not publishing and event are not firing in Global.asax
                3. Global.asax not firing for Release build
                4. Mystery of Global.asax in ASP.NET MVC application

                我们还尝试将以下文件放在rootbin 目录中。

                1. App_global.asax.dllApp_global.asax.compiled 文件
                2. PrecompiledApp.config

                都没有用!

                为了触发全局事件,对于我们的 asp.net 2.0 网站,我们必须使用原始的 Global.asax 而不是 pre-compiled dll。

                希望这对某人有所帮助!干杯!快乐编码! :D

                【讨论】:

                  【解决方案10】:

                  我的解决方法很奇怪。在我的开发机器上,我使用的是 localhost,我更改了它使用的端口号 - 然后它就可以工作了。

                  【讨论】:

                    【解决方案11】:

                    也在 IIS 管理器中打开点网调试。它在“编译”下

                    【讨论】:

                      【解决方案12】:

                      如果 bin 目录中缺少所需的 dll(例如,可能有一个已在您的最新版本中使用但意外从部署中排除的第三方 dll),则Application_Start 将不会触发。

                      【讨论】:

                        【解决方案13】:

                        通过在 bin 文件夹中添加以下编译文件解决了我的问题。

                        App_global.asax.compiled
                        App_global.asax.dll
                        

                        【讨论】:

                          猜你喜欢
                          • 1970-01-01
                          • 1970-01-01
                          • 2021-01-18
                          • 2012-01-11
                          • 1970-01-01
                          • 2011-05-05
                          • 2020-02-09
                          • 1970-01-01
                          • 1970-01-01
                          相关资源
                          最近更新 更多