ASPX 生成html静态页面的问题



ASPX 生成html静态页面的问题

先把我做的站简单介绍一下:整个站aspx页面不是很多,10页左右,我想把其中一些要经常访问的页面转变成静态的,这些页面结构都很简单,并且数据量不是很大,但是会页面内容实时性比较强,随着时间变化比较大。我的设计就是在global.asax 里面 用一个 timer 每隔5分钟生成一次静态页面,生成静态页的方法就是 对这个页面一个webquest 然后吧 stream 读到 html 文件里面去。用这种方法 存在两个问题:1.先贴出代码 :


void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
System.Timers.Timer timehtml = new System.Timers.Timer(1000 * 60 * 5);
timehtml.AutoReset = true;
timehtml.Enabled = true;
timehtml.Elapsed = new System.Timers.ElapsedEventHandler(OnTime);
}

void Application_End(object sender, EventArgs e)
{
// 在应用程序关闭时运行的代码

}

void OnTime(object sender, System.Timers.ElapsedEventArgs e)
{
/////////需要修改
getUrlResponse("http://www.xxxxx.com/atoh.aspx");

}
bool getUrlResponse(string Url)
{
string errorMsg = "";
try
{
System.Net.WebRequest wReq = System.Net.WebRequest.Create(Url);
System.Net.WebResponse wResp = wReq.GetResponse();
}
catch (System.Exception ex)
{
Application["result"] = ex.Message;
return false;
}
return true;
}这个 getUrlResponse 的主要作用就是请求一下 atoh.aspx 这个页面 ,因为 atoh.aspx这个页面的 pageload里调用了一个 函数 这个函数实现了 aspx 到 html 的转换 。
其中主要存在的问题是 :getUrlResponse 每次只能被执行 2次 ,第三次时到 System.Net.WebResponse wResp = wReq.GetResponse();了 这句 执行不下去了
然后就报错 timeout ,请各位大虾帮帮忙。

问题2:这种生成静态页面的方法,也是从网上拷贝过来,然后自己改了改,当时就觉的这种方法简单,后来看到有人说这个是最傻的方法。我挺费解,我觉的这种方法还行吧,至少不会占用系统很多资源。本人是菜鸟,熟悉可能比较浅,请大虾门指教一下,对于我做的站的这种需求,我用的这种方法适用吗?是不是有更稳定 更高效的方法。




网友回复:既然固定5分钟,不如用OutputCatch了
网友回复:路过,友情 up
网友回复:在ASP.NET 2.0中,有时候需要对ASP.NET生成的HTML代码进行处理,或者是保存成静态文件。ASP.NET 提供了直接将请求保存成文件的方法:HttpRequest.SaveAs方法。下面这个方法就是在ASP.NET 2.0中得到ASP.NET生成的HTML代码,同时,生成一个静态文件的方法。

C#

<%@ Page Language="C#" AutoEventWireup="true" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
// 计算数据,完全可以从数据看取得
ICollection CreateDataSource( )
{
System.Data.DataTable dt = new System.Data.DataTable();
System.Data.DataRow dr;
dt.Columns.Add(new System.Data.DataColumn("学生班级", typeof(System.String)));
dt.Columns.Add(new System.Data.DataColumn("学生姓名", typeof(System.String)));
dt.Columns.Add(new System.Data.DataColumn("语文", typeof(System.Decimal)));
dt.Columns.Add(new System.Data.DataColumn("数学", typeof(System.Decimal)));
dt.Columns.Add(new System.Data.DataColumn("英语", typeof(System.Decimal)));
dt.Columns.Add(new System.Data.DataColumn("计算机", typeof(System.Decimal)));

for (int i = 0 ; i < 50 ; i )
{
System.Random rd = new System.Random(Environment.TickCount * i); ;
dr = dt.NewRow();
dr[0] = "班级" i.ToString();
dr[1] = "【孟子E章】" i.ToString();
dr[2] = System.Math.Round(rd.NextDouble() * 100, 2);
dr[3] = System.Math.Round(rd.NextDouble() * 100, 2);
dr[4] = System.Math.Round(rd.NextDouble() * 100, 2);
dr[5] = System.Math.Round(rd.NextDouble() * 100, 2);
dt.Rows.Add(dr);
}
System.Data.DataView dv = new System.Data.DataView(dt);
return dv;
}

protected void Page_Load( object sender, EventArgs e )
{
if (!IsPostBack)
{
GridView1.DataSource = CreateDataSource();
GridView1.DataBind();
}
}
protected override void Render( HtmlTextWriter writer )
{
System.IO.StringWriter html = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter tw = new System.Web.UI.HtmlTextWriter(html);
base.Render(tw);
System.IO.StreamWriter sw;
sw = new System.IO.StreamWriter(Server.MapPath("a.htm"), false, System.Text.Encoding.Default);
sw.Write(html.ToString());
sw.Close();

转载于:https://www.cnblogs.com/126163/archive/2008/06/27/1230822.html

你可能感兴趣的:(xhtml,c#,ui)