c#程序的的控件如果都写在ranat=server让他们在服务器运行,就会加大服务器的负担。现贴出一种将动态页面 转换为静态页面的主要方法写出来供爱好编程的人共同学习。
源码如下:
/// <param name="url">页面的地址</param>
/// <param name="fna">生成的静态页面的名称</param>
/// <returns></returns>
private bool CreateList(string url, string fna)
{
bool ok;
//准备生成
string strHtml;
StreamReader sr = null; //用来读取流
StreamWriter sw = null; //用来写文件
Encoding code = Encoding.GetEncoding("utf-8"); //定义编码
//构造web请求,发送请求,获取响应
WebRequest HttpWebRequest = null;
WebResponse HttpWebResponse = null;
HttpWebRequest = WebRequest.Create(url);
HttpWebResponse = HttpWebRequest.GetResponse();
//获得流
sr = new StreamReader(HttpWebResponse.GetResponseStream(), code);
strHtml = sr.ReadToEnd();
//写入文件
try
{
sw = new StreamWriter(fna, false, code);
sw.Write(strHtml);
sw.Flush();
ok = true;
}
catch (Exception ex)
{
HttpContext.Current.Response.Write("<p>写入文件出错:" + ex.Message);
HttpContext.Current.Response.End();
ok = false;
}
finally
{
sw.Close();
}
return ok;
}
//调用上面的方法,我这是点击按钮执行
protected void Button3_Click(object sender, EventArgs e)
{
string url = @"页面的地址,注意,这个不是物理路径!!
//html页面文件名命名
string fna = Server.MapPath("") + "\\" + DateTime.Now.ToString("yyyyMMddHHmmss") + DateTime.Now.Millisecond.ToString() + ".html";//当然后缀名自己加,一般的是.html、.htm
if (CreateList(url, fna))
{
Response.Write("<p>生成文件成功:" + fna);
}
}