用Response.Filter生成静态页

我原来写的利用UrlRewrite,asp.net动态生成htm页面(补充说明2) ,生成静态页面时,使用下边的代码

Code

上边的这个类在生成静态页的时候,如果.net解析代码时,遇到错误,它依然会生成一个静态页面,而且这个静态页面在程序运行结束的时候,还处于打开状态。
显然这是我们不愿意看到的,而且这个类还不支持并发操作,如果和某一页面的关联的静态页失效了,假定这时候有两个用户同时访问这个页面,其中一个用户正在向静态页面写入数据,另外一个用户却需要访问这个已被别人打开的页面,系统同样会出现错误。基于这两个问题,我把这个类修改成下边的样子,就可以解决上述问题了。
Code

修改的地方是构造函数和这个方法(public override void Write(byte[] buffer, int offset, int count)),调用的方法分为两种,一种是在页面级别的调用,示例如下:
    protected override void OnInit(EventArgs e)
    
{
        
if (!this.IsPostBack)
        
{
            
string filePath = this.Server.MapPath(Common.AppName) + "\\index.htm";
            Response.Filter 
= new AspNetFilter(Response.Filter, filePath);
        }

        
base.OnInit(e);
    }

重写Page类的OnInit方法,另外一种调用方法参考我写的利用UrlRewrite,asp.net动态生成htm页面(补充说明2
posted @ 2008-02-19 10:36  王庆  阅读(2447)  评论(2编辑  收藏  举报