asp.net 生成静态页笔记

时间:2022-09-18 00:10:23

1.使用serever.Excute 

复制代码代码如下:


StreamWriter sw = new StreamWriter(Server.MapPath("html/Login.html"), false); 
Server.Execute("ShowColumn.aspx?id=1&page=2", sw); 
sw.Close(); 


2.替换字符 

url重写 
1.定义重写规则 
urls.xml 变成urls.config 

复制代码代码如下:


<?xml version="1.0" encoding="utf-8" ?> 
<Urls> 
<rewrite name="ShowArticle" pattern="article-(\d+).html" path ="article-{0}.html" page="showarticle.aspx" query="id=$1"></rewrite> 
<rewrite name="ShowList" pattern="list-(\d+).html" path ="list-{0}.html" page="showlist.aspx" query="id=$1"></rewrite> 
</Urls> 


2.创建一个简单的实体urls类 
3.urls类 获取urls.config文件中的所有url 
4.httpmodule类处理 请求的地址 
5.在web.config httpmodule节点添加 

asp.net生成静态页的两种方法 

Default.aspx页面: 

复制代码代码如下:


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication6._Default" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" > 
<head id="Head1" runat="server"> 
<title>Asp.net生成静态页的两个例子</title> 
</head> 
<body> 
<form id="form1" runat="server"> 
<div> 
标题:<asp:TextBox ID="txtTitle" runat="server" Width="352px"></asp:TextBox><br /> 
内容:<asp:TextBox ID="txtContent" runat="server" Height="179px" TextMode="MultiLine" 
Width="350px"></asp:TextBox><br /> 
<br /> 
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="根据模板生成" /><br /> 
<br /> 
<br /> 
Url地址:<asp:TextBox ID="txtUrl" runat="server" ToolTip="请确认Url地址的存在" Width="359px"></asp:TextBox> 
<br /> 
<br /> 
<asp:Button ID="Button2" runat="server" Text="根据Url地址生成" OnClick="Button2_Click" /></div> 
</form> 
</body> 
</html> 


Default.aspx.cs 

复制代码代码如下:


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; 
using System.Net; 
using System.Text; 
using System.IO; 
namespace WebApplication6 

public partial class _Default : System.Web.UI.Page 

protected void Page_Load(object sender, EventArgs e) 


protected void Button1_Click(object sender, EventArgs e) 

//源码是替换掉模板中的特征字符 
string mbPath = Server.MapPath("template.htm"); 
Encoding code = Encoding.GetEncoding("gb2312"); 
StreamReader sr = null; 
StreamWriter sw = null; 
string str = null; 
//读取 
try 

sr = new StreamReader(mbPath, code); 
str = sr.ReadToEnd(); 

catch (Exception ex) 

throw ex; 

finally 

sr.Close(); 

//根据时间自动重命名,扩展名也可以自行修改 
string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".htm"; 
str = str.Replace("$title$", txtTitle.Text);//替换Title 
str = str.Replace("$content$", txtContent.Text);//替换content 
//生成静态文件 
try 

sw = new StreamWriter(Server.MapPath("htm/") + fileName, false, code); 
sw.Write(str); 
sw.Flush(); 

catch (Exception ex) 

throw ex; 

finally 

sw.Close(); 
Response.Write("恭喜<a href=htm/" + fileName + " target=_blank>" + fileName + "</a>已经生成,保存在htm文件夹下!"); 


protected void Button2_Click(object sender, EventArgs e) 

Encoding code = Encoding.GetEncoding("utf-8"); 
StreamReader sr = null; 
StreamWriter sw = null; 
string str = null; 
//读取远程路径 
WebRequest temp = WebRequest.Create(txtUrl.Text.Trim()); 
WebResponse myTemp = temp.GetResponse(); 
sr = new StreamReader(myTemp.GetResponseStream(), code); 
//读取 
try 

sr = new StreamReader(myTemp.GetResponseStream(), code); 
str = sr.ReadToEnd(); 

catch (Exception ex) 

throw ex; 

finally 

sr.Close(); 

string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".htm"; 
//写入 
try 

sw = new StreamWriter(Server.MapPath("htm/") + fileName, false, code); 
sw.Write(str); 
sw.Flush(); 

catch (Exception ex) 

throw ex; 

finally 

sw.Close(); 
Response.Write("恭喜<a href=htm/" + fileName + " target=_blank>" + fileName + "</a>已经生成,保存在htm文件夹下!");