ASP.NET生成静态页面的方法

ASP.NET生成静态页面的方法

使用静态页面有如下好处:

1、 安全:使用静态页面,用户访问的使没有任何操作功能的html页面,可以说从安全性方面大大提高了程序及服务器的安全。

2、 快速:用户访问的是提前生成好的静态页面,使用户对页面的请求瓶颈只受IO的限制而不会有其他方面的影响。

3、 降低服务器,数据库负载:因为用户访问的是静态页,对承载静态页的服务器配置要求降低了许多,同时,不会因为过大的访问量,造成数据库服务器负载过重等问题。

下面就介绍一个用ASP.NET生成静态页面的方法。

基本思路是:使用DW之类的工具生成一个静态页面模板。读取该模板文件,然后对里面的特殊标记使用真实的数据替换掉,并生成一个HTML文件。

1、实现代码

  •  
  • C# 代码   复制
  • 
      using System;
      using System.Collections.Generic;
      using System.Text;
      using System.Xml;
      using System.IO;
      
      namespace htmlWeb
      {
         public class CreateHtm
         {
            private string fileName;
    
            public String FileName
            {
                get { return fileName; }
            }
            /// <summary>
            /// 读取配置文件
            /// </summary>
            /// <param name="dirName">配置文件的路径名</param>
            /// <param name="tag">配置文件中的标签名</param>
            /// <returns>_replaceStr的长度</returns>
            private int GetConfig(String dirName, String tag)
            {
                XmlDataDocument config = new XmlDataDocument();
                try
                {
                    config.Load(dirName);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                XmlNodeList list = config.GetElementsByTagName(tag);
                return list.Count;
            }
             /// <summary>
             ///生成HTML文件
             /// </summary>
             /// <param name="configFileName">配置文件的路径名</param>
             /// <param name="configTag">配置文件中的标签名</param>
             /// <param name="dir">生成文件所在的文件夹的路径</param>
            /// <param name="templateFile">模板文件的的路径</param>
             /// <param name="param">要替换的字符串数组</param>
             /// <returns>生成的文件名</returns>
            public void MakeHtml(String configFileName, String configTag, String dir, String templateFile, String[] param)
            {
                fileName = null;
                int count = GetConfig(configFileName, configTag);
                String[] _replaceStr = new String[count];
                try
                {
                    FileStream tFile = File.Open(templateFile, FileMode.Open, FileAccess.Read);
                    StreamReader reader = new StreamReader(tFile, Encoding.GetEncoding("gb2312"));
                    StringBuilder sb = new StringBuilder(reader.ReadToEnd());
                    reader.Close();
                    for (int i = 0; i < count; i++)
                    {
                        sb.Replace("$repalce[" + i + "]$", param[i]);
                    }
     
                    fileName = DateTime.Now.ToFileTime().ToString() + ".htm";
                    FileStream rFile = File.Create(dir+"/" + fileName);
                    StreamWriter writer = new StreamWriter(rFile, Encoding.GetEncoding("gb2312"));
                    writer.Write(sb.ToString());
                    writer.Flush();
                    writer.Close();
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
     
            public void DeleteHtml(String dirName)
            {
                File.Delete(dirName);
            }
        }
     }
    
    		
  • 2、生成静态页的方法说明

     

    (1)、private int GetConfig(String dirName, String tag)

    此方法用于读取配置文件(见后),主要是获得要替换的字符串的个数,在本类同体现为一个字符串数组
     

    (2)、public void MakeHtml(String configFileName, String configTag, String dir, String templateFile, String[] param)

    此方法用于生成静态页面


     

    3、生成静态页的方法的使用示例

    (1)、首先,建立一个配置文件 config.xml.此文件告诉使用者每个标记的含义

  •  
  • XML 代码   复制
  • 
    
    <?xml version="1.0" encoding="utf-8" ?>
    <htmlWeb version="1">
      <config>
         <article key="0" value="title"/>
         <article key="1" value="author"/>
         <article key="2" value="context"/>
         <aritcle key="3" value="date"/>
      </config>
    </htmlWeb> 
    
    				

  • 这样配置后,类会把标记数组0,1,2,3的位置分别替换为题目,作者,内容,发布日期。

     

    (2)、模板文件

  •  
  • HTML 代码   复制
  • 
    <head>
     <title>模板文件</title>
    </head>
    <body>
      <h1>这是一个简单的HTML页,朋友们可以根据自己的需要重新设计</h1>
      <li>标题:$replace[0]$</li>
      <li>作者:$replace[1]$</li>
      <li>内容:$repalce[2]$</li>
      <li>时间:$repalce[3]$</li>
    </body>
    
    				
  •  (3)、使用方法:

  •  
  • C# 代码   复制
  • 
     using System;
     using System.Data;
     using System.Configuration;
     using System.Web;
     using System.Web.Security;
     using System.Web.UI;
     using System.Web.UI.WebControls;
     using System.Web.UI.WebControls.WebParts;
     using System.Web.UI.HtmlControls;
    
     namespace UseT
     {
        public class Test{   
          public void main(){     
          string[] param = new string[4];
          param[0] = "测试模板";
          param[1] = "农佳捷";
          param[2] = "这是一个测试文章";
          param[3] = "2007-10-30";
          
          htmlWeb.CreateHtm cs = new htmlWeb.CreateHtm();
          cs.MakeHtml("配置文件的路径
     “, ”article“, ”生成文件的路径“, "模板文件的路径", param)     
         }
         }
     }