手机
当前位置:查字典教程网 >编程开发 >asp.net教程 >asp.net 使用Response.Filter 过滤非法词汇
asp.net 使用Response.Filter 过滤非法词汇
摘要:另一种解决方案是在输出时过滤掉非常词汇,优点是只要写一次就好了,可以过滤整站的非法词汇,缺点是,非法词汇仍然存入到了数据库中,呵呵,大家可以...

另一种解决方案是在输出时过滤掉非常词汇,优点是只要写一次就好了,可以过滤整站的非法词汇,缺点是,非法词汇仍然存入到了数据库中,呵呵,大家可以有针对性的选择,本例用的是后者,起因在于当初没有做此功能,后来需要添加,这时又不想改原来代码,所以就想了这个办法,主要是采用了HttpResponse.Filter属性来处理。具体代码如下:

首先自定义一个类,来作为非法词汇的过滤器

复制代码 代码如下:

public class ResponseFilter:Stream

{

#region properties

Stream responseStream;

long position;

StringBuilder html = new StringBuilder();

#endregion

#region constructor

public ResponseFilter(Stream inputStream)

{

responseStream = inputStream;

}

#endregion

#region implemented abstract members

public override bool CanRead

{

get { return true; }

}

public override bool CanSeek

{

get { return true; }

}

public override bool CanWrite

{

get { return true; }

}

public override void Close()

{

responseStream.Close();

}

public override void Flush()

{

responseStream.Flush();

}

public override long Length

{

get { return 0; }

}

public override long Position

{

get { return position; }

set { position = value; }

}

public override long Seek(long offset, System.IO.SeekOrigin direction)

{

return responseStream.Seek(offset, direction);

}

public override void SetLength(long length)

{

responseStream.SetLength(length);

}

public override int Read(byte[] buffer, int offset, int count)

{

return responseStream.Read(buffer, offset, count);

}

#endregion

#region write method

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);

responseStream.Write(data, 0, data.Length);

}

#endregion

}

然后再Global.asax文件中,添加如下代码:

[code]

public void Application_BeginRequest(){

Response.Filter = new ResponseFilter(Response.Filter);

}

OK,测试一下吧!

【asp.net 使用Response.Filter 过滤非法词汇】相关文章:

ASP.NET中使用AspnetAccessProvider

asp.net Context.Handler 页面间传值方法第1/2页

asp.net Repeater绑定时使用函数

asp.net UrlReWriter使用经验小结

asp.net中List的使用方法

asp.net使用jquery模板引擎jtemplates呈现表格

asp.net OleDbCommand 的用法

asp.net Google的translate工具翻译 API

asp.net 分页sql语句(结合aspnetpager)

asp.net repeater实现批量删除时注册多选框id到客户端

精品推荐
分类导航