Asp.Net动态页面转静态页面主要代码
2023-06-13 09:14:15 时间
一个是一个页面转换的类,该类通过静态函数Changfile()来实现,动态页面到静态页面的转换。
复制代码代码如下:
usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;
usingSystem.Text;
usingSystem.IO;
/**////
///SummarydescriptionforHtmlProxy
///
publicclassHtmlProxy
...{
publicHtmlProxy()
...{
}
publicstaticboolChangeFile(intid)
...{
stringfilename=HttpContext.Current.Server.MapPath("Post_"+id+".html");
//尝试读取已有文件 Streamst=GetFileStream(filename);
//如果文件存在并且读取成功
if(st!=null)
...{
using(st)
...{
StreamToStream(st,HttpContext.Current.Response.OutputStream);
returntrue;
//Response.End();
}
}
else
...{
StringWritersw=newStringWriter();
HttpContext.Current.Server.Execute("ForumDetail.aspx?PID="+id,sw);
stringcontent=sw.ToString();
//写进文件
try
...{
using(FileStreamfs=newFileStream(filename,FileMode.Create,FileAccess.Write,FileShare.Write))
...{
using(StreamWriterstw=newStreamWriter(fs,HttpContext.Current.Response.ContentEncoding))
...{
stw.Write(content);
}
}
returntrue;
}
catch...{returnfalse;}
}
}
privatestaticStreamGetFileStream(stringfilename)
...{
try
...{
DateTimedt=File.GetLastWriteTime(filename);
TimeSpants=dt-DateTime.Now;
if(ts.TotalHours>1)
...{
//一小时后过期
returnnull;
}
returnnewFileStream(filename,FileMode.Open,FileAccess.Read,FileShare.Read);
}
catch...{returnnull;}
}
staticpublicvoidStreamToStream(Streamsrc,Streamdst)
...{
byte[]buf=newbyte[4096];
while(true)
...{
intc=src.Read(buf,0,buf.Length);
if(c==0)
return;
dst.Write(buf,0,c);
}
}
}
在页面文件中,ForURL.aspx的后台代码如下:
protectedvoidPage_Load(objectsender,EventArgse)
...{
try
...{
intid=int.Parse(Request.QueryString["PID"]);
if(HtmlProxy.ChangeFile(id))
...{
Response.Redirect("Post_"+id+".html");
}
else
...{
Response.Redirect("Post.aspx?PID="+id);
}
}
catch...{
}
}
相关文章
- Windows net start mysql 启动MySQL服务报错 发生系统错误 5 解决方法
- ASP.Net中menu控件使用「建议收藏」
- [接上篇]在Window10/11的Linux子系统Docker上部署VB.NET Asp.Net Core WebAPI应用
- VB.NET Core调用YOLOv5 ONNX模型进行目标检测(ML.NET)
- .Net 7 的AOT的程序比托管代码更容易破解?
- .net让Oracle与ASP.NET实现无缝连接(oracleasp)
- .net搭建ASP.NET应用程序在Linux系统上(linux搭建asp)
- ASP操作MySQL简易指南轻松删除记录(asp删除记录mysql)
- ASP操作Oracle 轻松实现查询驱动结果(asp查询oracle)
- ASP.net中md5加密码的方法
- asp.net数据库备份还原(sqlserver+access)
- asp.net下jqueryjason高效传输数据
- asp.net(C#)动态添加非ASP的标准html控件(如添加Script标签)
- asp.net过滤图片标签的正则
- Asp.net中的GridView导出遇到的两个问题和解决方法
- asp.net通过HttpModule自动在Url地址上添加参数
- ASP.NET输出图片简单代码
- Asp.NET生成静态页面并分页的代码
- asp.net保存、修改没有runat=server控件的控件值的一个解决方案
- ASP.NET页面借助IFrame提交表单数据所遇到问题的解决方法分享
- 使用ASP.NET模板生成HTML静态页面的五种方案
- ASP.NET设计网络硬盘之查看文件夹实现代码
- 基于ASP.NET的lucene.net全文搜索实现步骤
- 一个ASP.Net下的WebShell实例
- asp.net不用设置iis实现url重写类似伪静态路由
- 在ASP.NET中支持断点续传下载大文件(ZT)源码
- 一个ASP.NET的MYSQL的数据库操作类自己封装的