Ãö©ó¦bAsp.Net¤¤°ÊºA¶±ÂàÀRºA¶±ªº¤èªkºô¤W¤ñ¸û¦h¡Cµ²¦X¹ê»Úªº»Ý¨D¡A§Ú¦bºô¤W§ä¤F¤@¨Ç·½¥N½X¡A¨Ã§@×§ï¡C²{¦b§â×§ï«áªº¥N½X¥H¤Î»¡©ú¼g¤@¤U¡C
¤@Ó¬O¤@Ó¶±Âà´«ªºÃþ¡A¸ÓÃþ³q¹LÀRºA¨ç¼ÆChangfile¡]¡^¨Ó¹ê²{¡A°ÊºA¶±¨ìÀRºA¶±ªºÂà´«¡C
|
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¡Ö /// Summary description for HtmlProxy /// ¡Õ/summary¡Ö public class HtmlProxy ...{ public HtmlProxy() ...{ } public static bool ChangeFile(int id) ...{ string filename = HttpContext.Current.Server.MapPath("Post_" + id + ".html"); //¹Á¸ÕŪ¨ú¤w¦³¤å¥ó Stream st = GetFileStream(filename); //¦pªG¤å¥ó¦s¦b¨Ã¥BŪ¨ú¦¨¥\ 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(); //¼g¶i¤å¥ó 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) ...{ //¤@¤p®É«á¹L´Á 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); ¡@} ¡@} } ¡@¡@¦b¶±¤å¥ó¤¤¡AForURL.aspxªº«á»O¥N½X¦p¤U¡G 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 ...{ } }
|