Use Response.Filter来简体繁体转换 静态页生成. 利用UrlRewrite,asp.net动态生成htm页面

//Response.Filter实际上一个Stream类型并且可写.所以我们可以再页面最终呈现给客户端以前做一下处理,比如 去掉页面中非法字符,简体繁体转换,静态页生成 等等.
请看下面
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.IO;
using System.Text;
/// <summary>
/// Summary description for ResponseFilter
/// </summary>
public class ResponseFilter:Stream
{
    Stream newStream;
    
long position;

    StringBuilder strb 
= new StringBuilder();
    
public ResponseFilter()
    {
        
//
        
// TODO: Add constructor logic here
        
//
    }
    
public ResponseFilter(Stream inputStream)
    {
        newStream 
= inputStream; 
        
//
        
// TODO: Add constructor logic here
        
//
    }
    
public override bool CanRead
    {
        
get { return true; }
    }

    
public override bool CanSeek
    {
        
get { return true; }
    }

    
public override bool CanWrite
    {
        
get { return true; }
    }

    
public override void Flush()
    {
        newStream.Flush();
    }

    
public override long Length
    {
        
get { return 0; }
    }

    
public override long Position
    {
        
get { return position; }
        
set { position = value; }
    }

    
public override int Read(byte[] buffer, int offset, int count)
    {
        
return newStream.Read(buffer, offset, count);
    }

    
public override long Seek(long offset, SeekOrigin origin)
    {
        
return newStream.Seek(offset, origin);
    }

    
public override void SetLength(long value)
    {
        newStream.SetLength(value);
    }

    
public override void Write(byte[] buffer, int offset, int count)
    {
        
//string sBuffer = System.Text.UTF8Encoding.UTF8.GetString(buffer, offset, count);

        
////得到非法词汇列表,这个可以在数据库或Web.Config中读取出来
        //string pattern = @"(非法词汇1|非法词汇2|非法词汇3)";
        
//string[] s = pattern.Split(new string[] { "|" }, StringSplitOptions.RemoveEmptyEntries);

        
//foreach (string s1 in s)
        
//{
        
//    sBuffer = sBuffer.Replace(s1, "**");
        
//}

        
//byte[] data = System.Text.UTF8Encoding.UTF8.GetBytes(sBuffer);
        
//newStream.Write(data, 0, data.Length);
        
//----------------------------------------------------------------
        string s = Microsoft.VisualBasic.Strings.StrConv(
            Encoding.GetEncoding(
"GB2312").GetString(buffer),
            Microsoft.VisualBasic.VbStrConv.TraditionalChinese, 
0);
        
byte[] data = Encoding.GetEncoding("BIG5").GetBytes(s);
        newStream.Write(data, 
0, data.Length);

    }
}

//Call the method.
    void Application_BeginRequest(object sender, EventArgs e)
    {
       
// Context.Response.Charset = "BIG5";
        
//Context.Response.Buffer = false;
        Context.Response.Filter = new ResponseFilter(Response.Filter); 
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        
//Response.Filter=new GZipStream(Response.Filter, CompressionMode.Compress);
       
// Response.AddHeader("content-encoding","gzip");
    }
//这个适合多个页一次过处理

public void Application_BeginRequest() 
{
    
string path = HttpContext.Current.Request.Path.ToLower();
    
string[] paths = new string[]
    {
        
"/aa/","/bb/"
    };
    
foreach (string item in paths)
    {
        
if (path.StartsWith(item))
        {
            Response.Filter 
= new ResponseFilter(Response.Filter);
            
break;
        }
    }
}
或者重写某页的Render方法
http://www.cnblogs.com/fengfeng/archive/2008/02/15/1069462.html

posted on 2009-10-16 15:07  博览潇湘  阅读(673)  评论(0)    收藏  举报

导航