你的位置:齐鲁公社 >> 科教 >> 电脑网络 >> 网页设计 >> 详细内容 在线投稿

Asp.Net中动态页面转静态页面

99书城会员招募      特惠酒店,尽享关怀
排行榜 收藏 打印 发给朋友 举报 来源: 本站原创   发布者:webmaster
热度73票  浏览1439次 【共0条评论】【我要评论 时间:2008年7月05日 16:19
关于在Asp.Net中动态页面转静态页面的方法网上比较多。结合实际的需求,我在网上找了一些源代码,并作修改。现在把修改后的代码以及说明写一下。
MnJ%zVi*q0
xK}3t.E5v(G;J7b%|0一个是一个页面转换的类,该类通过静态函数Changfile()来实现,动态页面到静态页面的转换。

QUOTE:

j"}1XD qJ0
using System;
Y9T-x8[/yxGk2?*M0using System.Data;
7P,Y3O2|(uX4xO;J0using System.Configuration;
Elt_;Q ~.u"FP%OF0using System.Web;
B Sf:DG]0using System.Web.Security;
'jk T#b!LwoX0using System.Web.UI; 齐鲁公社6r)? t t9N*g"vX b
using System.Web.UI.WebControls;
_&[i~;K]E0using System.Web.UI.WebControls.WebParts;
4NRvOF TUf0using System.Web.UI.HtmlControls; 齐鲁公社 C2X&T&GV `
using System.Text; 齐鲁公社2o*Q0S"i_
using System.IO;
i a1\FT$\0
)Y G9SGp{z9rn.A0/**//// <summary>齐鲁公社 w"^a_}Lb\8h~-v a
/// Summary description for HtmlProxy
$yZ'u(T~l/zj0/// </summary>
ie K_ SbzT3W0public class HtmlProxy齐鲁公社 mrivP#P
...{齐鲁公社!mGQ,TJ-v0u
public HtmlProxy()
._%LHy e7F5h0...{
1UI5P7o$x1@.q8\0}齐鲁公社OZ'O3UC-i8w$ih
public static bool ChangeFile(int id)齐鲁公社 F$LC0A@X+v?
...{齐鲁公社 D'fbA9~l3H7BZo)T
string filename = HttpContext.Current.Server.MapPath("Post_" + id + ".html");
6C\bZ5Bg7`$]{0//尝试读取已有文件
)J8p'W7jVl5U%h0Stream st = GetFileStream(filename);
1b[uc)LW0//如果文件存在并且读取成功 齐鲁公社&S5l s{1v.d$q
if (st != null)
nf/pW:Z0|:JlS0...{
7JB,f#lxd0using (st)
([AEUgd+m4Hc0...{
0I7Hu*?4YK0StreamToStream(st, HttpContext.Current.Response.OutputStream); 齐鲁公社+\Cp-]Kn-y5i De
return true; 齐鲁公社&m+j3m2\i
//Response.End(); 齐鲁公社*Pv3L2|MX.H
}齐鲁公社:PC1AxS/D2FI
}齐鲁公社0j bm,l5m7T
else
0GJqwRL0...{齐鲁公社/TmQ?.^1J G
StringWriter sw = new StringWriter();
p1?1@ i| R$j b0HttpContext.Current.Server.Execute("ForumDetail.aspx?PID=" + id, sw);
'\z M;Eu S[0齐鲁公社i"B`W!M @F(kL
string content = sw.ToString();
,A[*s}j+V.{8e`(m%f0//写进文件
+~L j_s0Qb8~u*w5~0try齐鲁公社;`mQ-j-oF
...{
*`9[l0HZw0using (FileStream fs = new FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.Write))齐鲁公社9s~r!?,~
...{齐鲁公社 ~-~8| Ke$B,c
using (StreamWriter stw = new StreamWriter(fs, HttpContext.Current.Response.ContentEncoding))
\9Cnu-N~ y0...{
7|Nh s _%I0stw.Write(content);
z"I7d]d7[0}
q8q0z}I8XHW0}齐鲁公社Y6M&v {?+?``*a*n6G
 return true; 齐鲁公社MNk#a&G7WJT$IO
}
2q%C#O(]n5a(t0catch ...{ return false; }
,dF#] F M]ACu0}
$bJ w0k[p.H0}齐鲁公社3k jC4fjM
齐鲁公社,CwW.bvo
private static Stream GetFileStream(string filename)齐鲁公社'I![4[6R9A4V%P&x
...{齐鲁公社"ZO*q'|~b I~
try齐鲁公社*Vdhb8J^u{
...{齐鲁公社2} U&E'jw{K:g.d
DateTime dt = File.GetLastWriteTime(filename);
S]5I JM!l;`H'k+k(t0TimeSpan ts = dt - DateTime.Now; 齐鲁公社,nr)K4?9bo%Ac\
if (ts.TotalHours >1)
+W'n/Z#Qg @0...{
ZRt/b$@[:aWQ0//一小时后过期齐鲁公社"w6lK$^g$s
return null; 齐鲁公社6i/r&V*_~0T
}齐鲁公社%i"] k!C/l/t
return new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read);
L\([|9{F&[ZEA:I0}齐鲁公社"js/}2](@*H:k$B
catch ...{ return null; }
er!U G%Je(u D0}
D&@$TM(D!I$Qs0static public void StreamToStream(Stream src, Stream dst)齐鲁公社*b-^Q$j.@r
...{
H8Q.],q'iC ^0  byte[] buf = new byte[4096];
z6W&{s'|*NK b0  while (true)齐鲁公社5|1j&{T`_lfV
...{齐鲁公社$[}9]^hA ddj
int c = src.Read(buf, 0, buf.Length);
P/|!D3V[(k0if (c == 0)
5y^ly4i9Yr C7OK0return;
b+S-t6HG7m.c0dst.Write(buf, 0, c); 齐鲁公社-Md(v{j V
 }齐鲁公社mJ%bI:u%mWV?
 }齐鲁公社$P:R5h'[ Bw Z
}
&a nLouB4X6B0  在页面文件中,ForURL.aspx的后台代码如下:齐鲁公社-v)P~i3EN
protected void Page_Load(object sender, EventArgs e)齐鲁公社fH'I3Jh
...{
?i?@#^a&g0try齐鲁公社a]tW6N&eV
...{齐鲁公社8BR$~!@"G g_L
int id = int.Parse(Request.QueryString["PID"]);
|$R z;@6s0if(HtmlProxy.ChangeFile(id))齐鲁公社9E:b"\"B)j6{ Bs N
...{齐鲁公社aX6R2k#C/V?L!c
 Response.Redirect("Post_" + id + ".html"); 齐鲁公社w9^ B0L(n2^2H(K-~
}
n(uAF-{`}1N0 else
+j2VJ.VBo0...{
(SNZ&z)_ y0 Response.Redirect("Post.aspx?PID=" + id );
,L|7Y ^3w.ML E0}齐鲁公社,FjC8~*q$R
}
-yFPpR[!o0 catch ...{
,RxNPS|e"a U#@0}齐鲁公社;|w6t7W~*Z'C\5m!G
}齐鲁公社_)o{0tz9Hs
顶:12 踩:14
【已经有22人表态】
5票
感动
3票
路过
3票
高兴
3票
难过
3票
搞笑
2票
愤怒
1票
无聊
2票
同情
上一篇 下一篇
查看全部回复【已有0位网友发表了看法】

网络资源

合作伙伴