您的位置:首页 > 编程语言 > ASP

在global.asax中实现定时生成静态首页 (asp.net C#)

2013-07-09 20:06 627 查看
[align=left]<%@ Application Language="C#" %>[/align]
[align=left]<script RunAt="server">[/align]


void Application_Start(object sender, EventArgs e)

{

// 在应用程序启动时运行的代码

System.Timers.Timer timehtml = new System.Timers.Timer(1000 * 600);

timehtml.AutoReset = true;

timehtml.Enabled = true;

timehtml.Elapsed += new System.Timers.ElapsedEventHandler(BuildHtml);

}

void Application_End(object sender, EventArgs e)

{

// 在应用程序关闭时运行的代码

}

/// <summary>

/// 生成静态页面

/// </summary>

void BuildHtml(object sender, System.Timers.ElapsedEventArgs e)

{

string htmlcode = getUrltoHtml("http://localhost/Default.aspx");

string path = AppDomain.CurrentDomain.BaseDirectory + "Default.htm";

System.IO.StreamWriter sw = new System.IO.StreamWriter(path, false, System.Text.Encoding.UTF8);

sw.Write(htmlcode);

sw.Close();

System.Threading.Thread.Sleep(600000);

}

/// <summary>

/// 传入URL返回网页的html代码

/// </summary>

/// <param name="Url"></param>

/// <returns></returns>

string getUrltoHtml(string Url)

{

string errorMsg = "";

try

{

System.Net.WebRequest wReq = System.Net.WebRequest.Create(Url);

System.Net.WebResponse wResp = wReq.GetResponse();

System.IO.Stream respStream = wResp.GetResponseStream();

System.IO.StreamReader reader = new System.IO.StreamReader(respStream, System.Text.Encoding.UTF8);

return reader.ReadToEnd();

}

catch (System.Exception ex)

{

errorMsg = ex.Message;

}

return "";

}

void Application_Error(object sender, EventArgs e)

{

// 在出现未处理的错误时运行的代码

[align=left] }[/align]
void Session_Start(object sender, EventArgs e)

{

// 在新会话启动时运行的代码

Session.Timeout = 5; //设置Session的有效时间,可根据需要修改

Application.Lock();

Application["online"] = Convert.ToInt32(Application["online"]) + 1;

Application.UnLock();

}

void Session_End(object sender, EventArgs e)

{

// 在会话结束时运行的代码

// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为

// InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer

// 或 SQLServer,则不会引发该事件。

Application.Lock();

Application["online"] = Convert.ToInt32(Application["online"]) - 1;

Application.UnLock();

}

</script>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: