当网站发布时,会话和应用程序事件不会触发
本文关键字:事件 应用程序 会话 网站 布时 | 更新日期: 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中的本地计算机上正常工作。发布时不起作用。如果我只能让这个确切的代码在服务器上工作,我就可以添加实际的生产代码。