C# 应用程序_Start()未在Global.asax中被激发

C# 应用程序_Start()未在Global.asax中被激发,c#,asp.net,asp.net-mvc,iis,C#,Asp.net,Asp.net Mvc,Iis,这在本地和我们的QA服务器中运行良好。但是,在我们的一个客户机服务器中,应用程序_Start()似乎根本没有被触发 我的应用程序_Start()如下所示: void Application_Start(object sender, EventArgs e) { EventLogging.LogEvent("Application_Start() fired in Global.asax.", EventLogging.LogLevel.Basic); Application["A

这在本地和我们的QA服务器中运行良好。但是,在我们的一个客户机服务器中,应用程序_Start()似乎根本没有被触发

我的应用程序_Start()如下所示:

void Application_Start(object sender, EventArgs e)
{
    EventLogging.LogEvent("Application_Start() fired in Global.asax.", EventLogging.LogLevel.Basic);
    Application["ApplicationName"] = "My Application Name";
    EventLogging.LogVerbose("Application_Start() - ApplicationName: " + (Application["ApplicationName"] ?? "NA"));
}
在我的一个代码模块中,我检查应用程序[“ApplicationName”],如果它有值,我启动一个长时间运行的调度程序线程。问题是应用程序_Start()从未设置此应用程序[“ApplicationName”]

到目前为止,我所尝试的:

  • 我的ASP.NET网站是预编译的,所以我验证了
    PrecompiledApp.config
    是否在我网站的根目录中
  • 我验证了bin目录中是否存在
    App_global.asax.dll
    App_global.asax.compiled
    App_global.asax.pdb
  • 我验证了应用程序池正在经典模式下运行
  • 我清除了临时ASP.net文件
  • 我的网站的IIS应用程序池具有以下属性:

  • NET CLR版本:v4.0
  • 启用32位应用程序=真
  • 托管管道模式=经典
  • 启动模式=按需启动
  • 我确信此服务器上有某种配置导致
    应用程序\u Start()
    无法启动,但我不确定它是什么

    我已经阅读并尝试了以下建议的方法,但迄今为止运气不佳:

  • 这让我快发疯了。请帮忙。谢谢

    编辑:根据您的要求,这是我的整个global.asax:

    <%@ Application Language="C#" Inherits="WebFramework.GlobalBase" %>
    <%@ Import Namespace="System" %>
    <%@ Import Namespace="System.Web" %>
    <%@ Import Namespace="System.Web.Http" %>
    <%@ Import Namespace="System.Web.Mvc" %>
    <%@ Import Namespace="System.Web.Routing" %>
    <%@ Import Namespace="System.Reflection" %>
    
    <script runat="server">
    
        void Application_Start(object sender, EventArgs e)
        {
            EventLogging.LogEvent("Application_Start() fired in Global.asax.", EventLogging.LogLevel.Basic);
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
    
            Application["ApplicationName"] = "My Application";
            EventLogging.LogVerbose("Application_Start() - ApplicationName: " + (Application["ApplicationName"] ?? "NA"));
        }
    
        void Application_End(object sender, EventArgs e)
        {
            //  Code that runs on application shutdown
        }
    
        void Application_Error(object sender, EventArgs e)
        {
            // Code that runs when an unhandled error occurs
        }
    
        void Session_Start(object sender, EventArgs e)
        {
            // Code that runs when a new session is started
    
        }
    
        void Session_End(object sender, EventArgs e)
        {
            // Code that runs when a session ends. 
            // Note: The Session_End event is raised only when the sessionstate mode
            // is set to InProc in the Web.config file. If session mode is set to StateServer 
            // or SQLServer, the event is not raised.
    
        }
    
        public override string GetVaryByCustomString(HttpContext context, string custom)
        {
            if (custom.ToLower() == "sessionid")
            {
                return context.Session.SessionID;
            }
            return base.GetVaryByCustomString(context, custom);
        }
    
    </script>
    
    
    无效应用程序\u启动(对象发送方,事件参数e)
    {
    EventLogging.LogEvent(“在Global.asax中激发的应用程序_Start()”,EventLogging.LogLevel.Basic);
    RegisterAllAreas();
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    应用程序[“ApplicationName”]=“我的应用程序”;
    LogVerbose(“Application_Start()-ApplicationName:+(Application[“ApplicationName”]??“NA”);
    }
    无效应用程序\u结束(对象发送方,事件参数e)
    {
    //应用程序关闭时运行的代码
    }
    无效应用程序错误(对象发送方,事件参数e)
    {
    //发生未处理错误时运行的代码
    }
    无效会话\u启动(对象发送方,事件参数e)
    {
    //启动新会话时运行的代码
    }
    无效会话\u结束(对象发送方,事件参数e)
    {
    //会话结束时运行的代码。
    //注意:只有在sessionstate模式下才会引发Session_End事件
    //在Web.config文件中设置为InProc。如果会话模式设置为StateServer
    //或SQLServer,则不会引发该事件。
    }
    公共重写字符串GetVaryByCustomString(HttpContext上下文,字符串自定义)
    {
    if(custom.ToLower()=“sessionid”)
    {
    返回context.Session.SessionID;
    }
    return base.GetVaryByCustomString(上下文,自定义);
    }
    

    注意:GlobalBase.cs基本上是一个不做任何事情的cs文件。

    这是Windows的问题!安装最新的Windows Server 2012 R2更新后,此问题不再发生

    这是Windows的问题!安装最新的Windows Server 2012 R2更新后,此问题不再发生

    您能够访问应用程序内的页面吗?@mason是的,页面可以访问,但我的计划程序线程从未生成,因为应用程序[“ApplicationName”]未由应用程序\u Start设置。您记录的事件从未被记录?global.asax中的其他方法如何?如果在事件日志中找不到任何内容,请确保事件日志设置正确,并且具有写入权限。第一行可能出现故障。@mason该客户端服务器中的global.asax没有记录任何内容。在我们的QA服务器中,它工作正常,我们可以看到日志。您能够访问应用程序中的页面吗?@mason是的,页面可以访问,但我的调度程序线程从未生成,因为应用程序[“ApplicationName”]未由应用程序\u Start设置。您记录的事件从未被记录?global.asax中的其他方法如何?如果在事件日志中找不到任何内容,请确保事件日志设置正确,并且具有写入权限。第一行可能出现故障。@mason该客户端服务器中的global.asax没有记录任何内容。在我们的QA服务器中,它工作正常,我们可以看到日志。