asp.net怎么样把整个网站的页面都变成html
我想提高我的网站访问速度,所以想把整个网站的页面生成html文件 请教各位高手 能不能给个例子 给我看看! 谢谢!
[解决办法]
可以的吧 我就是这么做的 我都是修改了页面就重新生成那个html
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.IO;
using LTP.Common;
/// <summary>
/// staticPage 的摘要说明
/// 页面静态处理
/// </summary>
public class staticPage : Page
{
public staticPage()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
private DataTable dt;
//自动生成页面开始//
protected override void OnPreInit(EventArgs e)
{
try
{
string stType = Request.QueryString["type"] == null ? "main" : Request.QueryString["type"].ToString();
string stID = Request.QueryString["id"] == null ? "" : Request.QueryString["id"].ToString();
string stPath = Request.QueryString["type"] == null ? "" : Request.QueryString["type"].ToString();
string P = System.IO.Path.GetFileName((this.Page.Request.PhysicalPath.ToString()).ToLower()).Replace(".aspx", "");
string str = string.Empty;
if (stType == "main")
{
str = StringPlus.ReplaceChar(P) + ".html";
}
else
{
str = StringPlus.ReplaceChar(P) + "/JoinDetails" + stID + ".html";
}
//string str = P + ".html";
string Path = Server.MapPath(str);
System.IO.FileInfo aFileInfo = new System.IO.FileInfo(Path);
if (aFileInfo.Exists)
{
TimeSpan M = System.DateTime.Now - aFileInfo.LastWriteTime;
if (M.TotalSeconds > 1)
aFileInfo.Delete();
else
Server.Transfer(str, true);
// Server.Transfer("index.html", true);
}
base.OnPreInit(e);
}
catch (Exception ex)
{
Response.Write(ex.Message.ToString());
//Public.Constant.Show(this, ex.Message.ToString());
//JS.WebError(@Page.Server.MapPath("~/index.aspx"), ex.Message.ToString(), Page.Title+" Static Error!");
}
}
protected override void OnInitComplete(EventArgs e)
{
try
{
/*
DmPagekey mdKeys = new DmPagekey();
IfPagekey dfKeys = new IfPagekey();
string pageName= System.IO.Path.GetFileName((this.Page.Request.PhysicalPath.ToString()).ToLower());
mdKeys = dfKeys.GetPagekeyInfo(pageName);
if (pageName.Length >= 1)
{
if (mdKeys != null)
{
Page.Title = mdKeys.pageTitle;
//Description
HtmlMeta desc = new HtmlMeta();
desc.Name = "Description";
desc.Content = mdKeys.pageDescription;
if (desc != null)
{
//hhead.Controls.Add(desc);
Page.Header.Controls.Add(desc);
}
//Keyword
HtmlMeta keywords = new HtmlMeta();
keywords.Name = "keywords";
keywords.Content = mdKeys.pageKeyWords;
if (keywords != null)
{
Page.Header.Controls.Add(keywords);
}
}
}*/
}
catch (Exception ex)
{
Response.Write(ex.Message.ToString());
//Public.Constant.Show(this, ex.Message.ToString());
}
base.OnInitComplete(e);
}
protected override void Render(HtmlTextWriter writer)
{
try
{
string stType = Request.QueryString["type"] == null ? "main" : Request.QueryString["type"].ToString();
string stID = Request.QueryString["id"] == null ? "" : Request.QueryString["id"].ToString();
string stPath = Request.QueryString["type"] == null ? "" : Request.QueryString["type"].ToString();
string P = System.IO.Path.GetFileName((this.Page.Request.PhysicalPath.ToString()).ToLower()).Replace(".aspx", "");
//string pp = this.Page.Request.RawUrl.ToString();
string str = string.Empty;
if (stType == "main")
{
str = StringPlus.ReplaceChar(P) + ".html";
}
else
{
str = StringPlus.ReplaceChar(P) + "/JoinDetails" + stID + ".html";
}
string Path = Server.MapPath(str);
//string Path = Server.MapPath("index.html");
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 = new System.IO.StreamWriter(Path, false, System.Text.Encoding.UTF8);
string Temp = html.ToString();
string s1 = "", s2 = "", s3 = "", s4 = "";
int i = 0;
int j = 0;
i = Temp.IndexOf("<input type=\"hidden\" name=\"__VIEWSTATE\" id=\"__VIEWSTATE\"");
if (i > 0)
{
j = Temp.IndexOf(">", i);
s1 = Temp.Substring(0, i);
s2 = Temp.Substring(j + 1, Temp.Length - j - 1);
}
i = s2.IndexOf("<input type=\"hidden\" name=\"__EVENTVALIDATION\" id=\"__EVENTVALIDATION\"");
if (i > 0)
{
// if __EVENTVALIDATION exist
i = s2.Remove(i).LastIndexOf("<div>");
j = s2.IndexOf("</div>", i);
s3 = s2.Substring(0, i);
s4 = s2.Substring(j + 6, s2.Length - j - 6);
/*
*
j = s2.IndexOf(">", i);
s3 = s2.Substring(0, i);
s4 = s2.Substring(j + 1, s2.Length - j - 1);
*/
Temp = s1 + s3 + s4;
}
else
{
Temp = s1 + s2;
}
//Temp = Temp.Replace("src=\"images/", "src=\"http://www.ignworld.com/images/");
sw.Write(Temp);
sw.Close();
tw.Close();
Response.Write(Temp);
}
catch (Exception ex)
{
Response.Write(ex.Message.ToString());
}
}
public void initSelection(HtmlSelect hSelect, int intCount)
{
for (int i = 1; i <= intCount; i++)
{
hSelect.Items.Add(new ListItem(i.ToString(), i.ToString()));
}
}
}