Asp.Net 动态页面转静态页面主要代码
Asp.Net 动态页面转静态页面主要代码
发布时间:2016-12-29 来源:查字典编辑
摘要:一个是一个页面转换的类,该类通过静态函数Changfile()来实现,动态页面到静态页面的转换。复制代码代码如下:usingSystem;u...

一个是一个页面转换的类,该类通过静态函数Changfile()来实现,动态页面到静态页面的转换。

复制代码 代码如下:

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.Text;

using System.IO;

/**////

/// Summary description for HtmlProxy

///

public class HtmlProxy

...{

public HtmlProxy()

...{

}

public static bool ChangeFile(int id)

...{

string filename = HttpContext.Current.Server.MapPath("Post_" + id + ".html");

//尝试读取已有文件 Stream st = GetFileStream(filename);

//如果文件存在并且读取成功

if (st != null)

...{

using (st)

...{

StreamToStream(st, HttpContext.Current.Response.OutputStream);

return true;

//Response.End();

}

}

else

...{

StringWriter sw = new StringWriter();

HttpContext.Current.Server.Execute("ForumDetail.aspx?PID=" + id, sw);

string content = sw.ToString();

//写进文件

try

...{

using (FileStream fs = new FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.Write))

...{

using (StreamWriter stw = new StreamWriter(fs, HttpContext.Current.Response.ContentEncoding))

...{

stw.Write(content);

}

}

return true;

}

catch ...{ return false; }

}

}

private static Stream GetFileStream(string filename)

...{

try

...{

DateTime dt = File.GetLastWriteTime(filename);

TimeSpan ts = dt - DateTime.Now;

if (ts.TotalHours >1)

...{

//一小时后过期

return null;

}

return new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read);

}

catch ...{ return null; }

}

static public void StreamToStream(Stream src, Stream dst)

...{

byte[] buf = new byte[4096];

while (true)

...{

int c = src.Read(buf, 0, buf.Length);

if (c == 0)

return;

dst.Write(buf, 0, c);

}

}

}

在页面文件中,ForURL.aspx的后台代码如下:

protected void Page_Load(object sender, EventArgs e)

...{

try

...{

int id = int.Parse(Request.QueryString["PID"]);

if(HtmlProxy.ChangeFile(id))

...{

Response.Redirect("Post_" + id + ".html");

}

else

...{

Response.Redirect("Post.aspx?PID=" + id );

}

}

catch ...{

}

}

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新asp.net教程学习
热门asp.net教程学习
编程开发子分类