我创建了一个每分钟运行的任务,并决定将其放在Application_Start
文件中的Global.asax
事件中,以便在应用程序启动后立即执行。当我运行它(没有调试和调试模式)时,它没有启动。
我试图将它放在Session_Start
事件中,只是为了确保它不是来自Global.asax
文件的标记,并且它运行良好。但不幸的是,它必须是应用程序启动时,而不是会话开始时。
这是我的Global.asax(ASP.NET 2.0,VS2008):
<%@ Application Language="C#" Inherits="Microsoft.Practices.CompositeWeb.WebClientApplication" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="TaskManager" %>
<script runat="server">
private TaskScheduler _scheduler = null;
void Application_Start(object sender, EventArgs e)
{
XmlDocument xml = new XmlDocument();
xml.Load(Server.MapPath(@"\Config\tasks.config"));
XmlNodeList nodes = xml.SelectNodes("Tasks/Task");
this._scheduler = new TaskScheduler(nodes);
this._scheduler.StartTasks();
}
void Application_End(object sender, EventArgs e)
{
this._scheduler.StopTasks();
}
void Application_Error(object sender, EventArgs e)
{
// Code that runs when an unhandled error occurs
}
void Session_Start(object sender, EventArgs e)
{
}
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.
}
</script>
答案 0 :(得分:0)
抱歉 - 由于代表我不能发表评论 - 但是如果遇到麻烦你可以求助于System.Diagnostics.Debugger.Launch();结合上述任何一项(编辑web.cofig等)