Use Response.Filter来简体繁体转换 静态页生成. 利用UrlRewrite,asp.net动态生成htm页面
//Response.Filter实际上一个Stream类型并且可写.所以我们可以再页面最终呈现给客户端以前做一下处理,比如 去掉页面中非法字符,简体繁体转换,静态页生成 等等.
请看下面
//Call the method.
http://www.cnblogs.com/fengfeng/archive/2008/02/15/1069462.html
请看下面
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);
}
}
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);
}
{
// 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");
}
{
//Response.Filter=new GZipStream(Response.Filter, CompressionMode.Compress);
// Response.AddHeader("content-encoding","gzip");
}
//这个适合多个页一次过处理public void Application_BeginRequest()或者重写某页的Render方法
{
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;
}
}
}
浙公网安备 33010602011771号