[已解决问题] ASP.NET怎么样定时生成静态页面?
提问时间: 2008-03-12 18:09
悬赏分:20 浏览:592 次
ASP.NET怎么样定时生成静态页面
以前用的是手工点击按钮生成的,
提问者:LiJun027 - 初学一级

问题补充:下面的,能给写的例子不?
/// <summary>
/// 生成静态页面
/// </summary>
/// <param name="URL">声明保存网址的变量</param>
/// <param name="NewURL">新页面的位置(包括生成的文件名)</param>
private void Build(string URL,string NewURL)
{
string errorMsg ;//'声明保存错误信息的变量

//URL = "http://drler.net/default.aspx" ;//'需要保存的网址
errorMsg = "";
try
{
System.Net.WebRequest wReq;
System.Net.WebResponse wResp;
wReq = System.Net.WebRequest.Create(URL) ;//创建请求实例
wResp = wReq.GetResponse() ;//获取Response
System.IO.StreamReader reader = new System.IO.StreamReader(wResp.GetResponseStream(), System.Text.Encoding.Default) ;//'创建StreamReader实例,并设置源字符编码为默认
System.IO.StreamWriter writer = new System.IO.StreamWriter(NewURL, false, System.Text.Encoding.GetEncoding("gb2312"));//创建StreamWriter实例 ,并设置目标字符编码为gb2312
//Response.Write(reader.ReadToEnd)
writer.Write(reader.ReadToEnd());// '写入文件
writer.Flush();// ' 将缓存内容写入文件
writer.Close();// '释放实例
reader.Close() ;//'释放实例
}
catch(Exception ex)
{
errorMsg = ex.ToString();
}
}
上面是生成页面的函数,写在按钮事件里面了

最佳答案
使用System.Threading.Timer在Application_Start注册一个事件,每隔一段时间检查一下是否需要生成新新的静态页面. 注意把Timer对象保存到Application里,或者其它地方,不然被GC了就不会再进行回调了.
2008/3/12 18:28:00 回答者:deerchao


提问者对于答案的评价:谢谢。。。。 我试下,有不明白的地方在问你
其它回答(1)
写一个Windows服务,定时去访问一个页面就好了~~比较稳定可靠.
7个月前   回答者:沙加 - 老鸟四级
评论
7个月前   deerchao :
在项目里添加一个"全局应用程序类(Global Application Class)",在里面写这样的代码:
public class Global : System.Web.HttpApplication
{
static Timer BuildStaticPagesTimer;
static object locker = new object();
static int count;

protected void Application_Start(object sender, EventArgs e)
{
//double check lock...
if (BuildStaticPagesTimer == null)
{
lock (locker)
{
if (BuildStaticPagesTimer == null)
{
//every 20 minutes, run BuildStaticPagesTimer_Callback in every 20 minutes
BuildStaticPagesTimer = new Timer(BuildStaticPagesTimer_Callback, null, 0,20*60*1000);
}
}
}
}

private static void BuildStaticPagesTimer_Callback(object state)
{
Dictionary<string, string> urlsNeedToBuild = GetPagesNeedToBuiltStatic();
foreach (string oldUrl in urlsNeedToBuild.Keys)
{
string newUrl = urlsNeedToBuild[oldUrl];
Build(oldUrl, newUrl);
}
}

private static void Build(string oldUrl, string newUrl)
{
//在这里写生成静态页面的代码
throw new NotImplementedException();
}

private static Dictionary<string, string> GetPagesNeedToBuiltStatic()
{
//在这里判断哪些页面需要生成静态页面
throw new NotImplementedException();
}
}

   您需要登录以后才能回答!
 

我要提问

我的问题


快到期问题

> 问题排行榜

相关内容

相关链接