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

你可能感兴趣的:(urlrewrite)