ASPX文件转HTML

我们开发的asp.net系统中,有些动态的页面常被频繁访问,如我们的首页index.aspx它涉及到大量的数据库查询工作,当不断有用户访问它时,服务器便不断向数据库的查询,实际上做了许多重复的工作 

服务器端的myPage.aspx 
客户端显示myPage.htm 
  
客户端访问 
  

针对这种资源的浪费情况,我们现在来设计一个解决方案。我们先将那些一段时间内内容不会有什么改变,但又遭大量访问的动态页面生成静态的页面存放在服务器上,当客户端发出访问请求时,就让他们直接访问我们生成的静态页面,过程如下图。 

客户端显示myPage.htm 
  
客户端访问 
  
Execute 

  
服务器端的myPage.aspx 
  
服务器端的myPage.htm 
  

现在我们需要一个后台程序来完成这些事情。 

我们可将此做成一个类class  AspxToHtml ,其代码如下: 

using System;
using System.IO;
using System.Web.UI;


namespace LeoLu
{
    /// <summary>
    /// AspxToHtml 的摘要说明。
    /// </summary>
    public class AspxToHtml
    {
        /// <summary>
        /// Aspx文件url
        /// </summary>
        public string strUrl;
        /// <summary>
        /// 生成html文件的保存路径
        /// </summary>
        public string strSavePath;
        /// <summary>
        /// 生成html文件的文件名
        /// </summary>
        public string strSaveFile;
        public AspxToHtml()
        {
            //
            // TODO: 在此处添加构造函数逻辑
            //
        }
        /// <summary>
        /// 将strUrl放到strSavePath目录下,保存为strSaveFile
        /// </summary>
        /// <returns>是否成功</returns>
        public bool ExecAspxToHtml()
        {
            try
            {
                StringWriter strHTML = new StringWriter();
                System.Web.UI.Page myPage = new Page();
                //System.Web.UI.Page中有个Server对象,我们要利用一下它
                myPage.Server.Execute(strUrl, strHTML);
                //将asp_net.aspx将在客户段显示的html内容读到了strHTML中
                StreamWriter sw = new StreamWriter(strSavePath + strSaveFile, true, System.Text.Encoding.GetEncoding("GB2312"));
                //新建一个文件Test.htm,文件格式为GB2312
                sw.Write(strHTML.ToString());
                //将strHTML中的字符写到Test.htm中
                strHTML.Close();
                //关闭StringWriter
                sw.Close();
                //关闭StreamWriter
                return true;
            }
            catch
            {
                return false;
            }
        }
        /// <summary>
        /// 将Url放到Path目录下,保存为FileName
        /// </summary>
        /// <param name="Url">aspx页面url</param>
        /// <param name="Path">生成html文件的保存路径</param>
        /// <param name="FileName">生成html文件的文件名</param>
        /// <returns></returns>
        public bool ExecAspxToHtml(string Url, string Path, string FileName)
        {
            try
            {
                StringWriter strHTML = new StringWriter();
                System.Web.UI.Page myPage = new Page();
                //System.Web.UI.Page中有个Server对象,我们要利用一下它
                myPage.Server.Execute(Url, strHTML);
                //将asp_net.aspx将在客户段显示的html内容读到了strHTML中
                StreamWriter sw = new StreamWriter(Path + FileName, true, System.Text.Encoding.GetEncoding("GB2312"));
                //新建一个文件Test.htm,文件格式为GB2312
                sw.Write(strHTML.ToString());
                //将strHTML中的字符写到Test.htm中
                strHTML.Close();
                //关闭StringWriter
                sw.Close();
                //关闭StreamWriter
                return true;
            }
            catch
            {
                return false;
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值