当网站发布时,会话和应用程序事件不会触发

本文关键字:事件 应用程序 会话 网站 布时 | 更新日期: 2023-09-27 18:08:17

有人问了这个问题,但我不太清楚答案。我正在使用应用程序和会话事件来编写日志和执行清理。当我调试ap时,VS中的一切都可以工作,但当我部署到服务器上的IIS时,事件不会被触发。我没有在Session_End或Application_End中使用请求、响应或服务器调用。我已将模式设置为InProc。所有流程都起作用,但在发布时不起作用。有人提到了添加App_global.asax的一些内容,但我不太确定我应该在中放入什么代码

当网站发布时,会话和应用程序事件不会触发

问题可能在您的配置中。App_global.ascx.compiled在编译时创建。您可以尝试创建新的serrings配置文件。只需转到配置管理器,添加新的配置文件,然后在发布网站时,选中预编译。

请确保您对IIS具有写入权限,并为日志指定路径。

好的,这是代码示例:

 void Application_Start(object sender, EventArgs e) 
    {
        // Code that runs on application startup
        ScriptManager.ScriptResourceMapping.AddDefinition("jquery", new ScriptResourceDefinition
        {
            Path="~/Scripts/jquery-1.11.0.js"
        });
        Application.Add("logPath", Server.MapPath("Log"));
        System.IO.FileStream logFile = new System.IO.FileStream((String)Application["logPath"] + System.IO.Path.DirectorySeparatorChar + "log.txt",
                System.IO.FileMode.Append, System.IO.FileAccess.Write);
        System.IO.StreamWriter logWriter = new System.IO.StreamWriter(logFile);
        logWriter.WriteLine(">>>>>> Application started on " + DateTime.Now.ToString());
        logWriter.Close();
        logFile.Close();
    }

Page_Unload将临时文件的列表存储在Session变量中。Session_End应该获得Session变量引用的列表并删除文件,但出于这个问题的目的,让我只展示这个示例:

void Session_Start(object sender, EventArgs e) 
    {
     System.IO.FileStream logFile = new System.IO.FileStream((String)Application["logPath"] + System.IO.Path.DirectorySeparatorChar + "log.txt",
                System.IO.FileMode.Append, System.IO.FileAccess.Write);
        System.IO.StreamWriter logWriter = new System.IO.StreamWriter(logFile);
        logWriter.WriteLine("---- Sessoion started on " + DateTime.Now.ToString());
        logWriter.Close();
        logFile.Close();
    }
void Session_End(object sender, EventArgs e) 
    {
        System.IO.FileStream logFile = new System.IO.FileStream((String)Application["logPath"] + System.IO.Path.DirectorySeparatorChar + "log.txt",
                System.IO.FileMode.Append, System.IO.FileAccess.Write);
        System.IO.StreamWriter logWriter = new System.IO.StreamWriter(logFile);
        logWriter.WriteLine("---- Sessoion ended on " + DateTime.Now.ToString());
        logWriter.Close();
        logFile.Close();
    }

所有这些都可以在VS和IIS Express中的本地计算机上正常工作。发布时不起作用。如果我只能让这个确切的代码在服务器上工作,我就可以添加实际的生产代码。