技术开发 频道

用Response.Filter生成静态页


【IT168技术文档】

  我原来写的利用UrlRewrite,asp.net动态生成htm页面(补充说明2) ,生成静态页面时,使用下边的代码
using System; using System.IO; using System.Web.UI; using System.Web; using URLRewriter.Config; using System.Configuration; using System.Text.RegularExpressions; namespace URLRewriter { /**//// <summary> /// 生成htm静态页面 /// </summary> public class ResponseFilter : Stream { private Stream m_sink; private long m_position; private FileStream fs; public ResponseFilter(Stream sink, string filePath) { m_sink = sink; fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write); } // The following members of Stream must be overriden. public override bool CanRead { get { return true; } } public override bool CanSeek { get { return false; } } public override bool CanWrite { get { return false; } } public override long Length { get { return 0; } } public override long Position { get { return m_position; } set { m_position = value; } } public override long Seek(long offset, System.IO.SeekOrigin direction) { return 0; } public override void SetLength(long length) { m_sink.SetLength(length); } public override void Close() { m_sink.Close(); fs.Close(); } public override void Flush() { m_sink.Flush(); } public override int Read(byte[] buffer, int offset, int count) { return m_sink.Read(buffer, offset, count); } // Override the Write method to filter Response to a file. public override void Write(byte[] buffer, int offset, int count) { //Write out the response to the browser. m_sink.Write(buffer, 0, count); //Write out the response to the file. fs.Write(buffer, 0, count); } } }
  上边的这个类在生成静态页的时候,如果.net解析代码时,遇到错误,它依然会生成一个静态页面,而且这个静态页面在程序运行结束的时候,还处于打开状态。
0
相关文章