Asp.Net 動(dòng)態(tài)頁(yè)面轉(zhuǎn)靜態(tài)頁(yè)面主要代碼
更新時(shí)間:2009年12月13日 02:31:29 作者:
關(guān)于在Asp.Net中動(dòng)態(tài)頁(yè)面轉(zhuǎn)靜態(tài)頁(yè)面的方法網(wǎng)上比較多。結(jié)合實(shí)際的需求,我在網(wǎng)上找了一些源代碼,并作修改?,F(xiàn)在把修改后的代碼以及說(shuō)明寫(xiě)一下。
一個(gè)是一個(gè)頁(yè)面轉(zhuǎn)換的類,該類通過(guò)靜態(tài)函數(shù)Changfile()來(lái)實(shí)現(xiàn),動(dòng)態(tài)頁(yè)面到靜態(tài)頁(yè)面的轉(zhuǎn)換?! ?
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();
//寫(xiě)進(jìn)文件
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)
...{
//一小時(shí)后過(guò)期
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);
}
}
}
在頁(yè)面文件中,F(xiàn)orURL.aspx的后臺(tái)代碼如下:
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 ...{
}
}
復(fù)制代碼 代碼如下:
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();
//寫(xiě)進(jìn)文件
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)
...{
//一小時(shí)后過(guò)期
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);
}
}
}
在頁(yè)面文件中,F(xiàn)orURL.aspx的后臺(tái)代碼如下:
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實(shí)現(xiàn)生成靜態(tài)頁(yè)并添加鏈接的方法
- Asp.Net生成靜態(tài)頁(yè)面的實(shí)現(xiàn)方法
- ASP.NET動(dòng)態(tài)生成靜態(tài)頁(yè)面的實(shí)例代碼
- 使用ASP.NET模板生成HTML靜態(tài)頁(yè)面的五種方案
- asp.net 生成靜態(tài)頁(yè)筆記
- Asp.Net 生成靜態(tài)頁(yè)并實(shí)現(xiàn)分頁(yè)效果
- Asp.NET 生成靜態(tài)頁(yè)面并分頁(yè)的代碼
- asp.net 實(shí)現(xiàn)靜態(tài)頁(yè)面累加訪問(wèn)量的三種方式
- ASP.NET 生成靜態(tài)頁(yè)面 實(shí)現(xiàn)思路
- asp.net 生成靜態(tài)頁(yè)時(shí)的進(jìn)度條顯示
- asp.net生成靜態(tài)頁(yè)并分頁(yè)+ubb
- ASP.NET靜態(tài)頁(yè)生成方法
相關(guān)文章
SignalR發(fā)送頁(yè)面跳轉(zhuǎn)通知的方法
這篇文章主要為大家詳細(xì)介紹了如何使用SignalR發(fā)送頁(yè)面跳轉(zhuǎn)通知的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02.net core2.0下使用Identity改用dapper存儲(chǔ)數(shù)據(jù)(實(shí)例講解)
下面小編就為大家分享一篇.net core2.0下使用Identity改用dapper存儲(chǔ)數(shù)據(jù)的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-11-11.NET Framework攔截HTTP請(qǐng)求的實(shí)現(xiàn)
本文主要介紹了.NET Framework攔截HTTP請(qǐng)求的實(shí)現(xiàn),主要用于記錄 HTTP 信息,調(diào)試程序、分析程序性能等方面,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03Asp.net 獲取指定目錄下的后綴名為".doc" 的所有文件名和文件路徑
Asp.net 獲取指定目錄下的后綴名為“.doc” 的所有文件名和文件路徑,幫寫(xiě)一個(gè)方法2011-07-07asp.net上傳圖片并作處理水印與縮略圖的實(shí)例代碼
asp.net 上傳圖片并作處理(生成縮略圖 、在圖片上增加文字水印、在圖片上生成圖片水?。┑膶?shí)例代碼,經(jīng)過(guò)測(cè)試!2013-06-06ASP.NET MVC API 接口驗(yàn)證的示例代碼
本篇文章主要介紹了ASP.NET MVC API 接口驗(yàn)證的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10asp.net 用XML生成放便擴(kuò)展的自定義樹(shù)
快過(guò)年了,公司沒(méi)有多少工作。閑來(lái)無(wú)事,共享一下之前為WEB系統(tǒng)所做的放便擴(kuò)展的自定義樹(shù)。2010-02-02