国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > .NET > 正文

asp.net 使用Response.Filter 過(guò)濾非法詞匯

2024-07-10 13:26:28
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
另一種解決方案是在輸出時(shí)過(guò)濾掉非常詞匯,優(yōu)點(diǎn)是只要寫(xiě)一次就好了,可以過(guò)濾整站的非法詞匯,缺點(diǎn)是,非法詞匯仍然存入到了數(shù)據(jù)庫(kù)中,呵呵,大家可以有針對(duì)性的選擇,本例用的是后者,起因在于當(dāng)初沒(méi)有做此功能,后來(lái)需要添加,這時(shí)又不想改原來(lái)代碼,所以就想了這個(gè)辦法,主要是采用了HttpResponse.Filter屬性來(lái)處理。具體代碼如下:

首先自定義一個(gè)類(lèi),來(lái)作為非法詞匯的過(guò)濾器

復(fù)制代碼 代碼如下:


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);
//得到非法詞匯列表,這個(gè)可以在數(shù)據(jù)庫(kù)或Web.Config中讀取出來(lái)
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,測(cè)試一下吧!
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 宁河县| 呼图壁县| 广河县| 平阳县| 乐业县| 江华| 拉孜县| 乌什县| 西吉县| 兴化市| 荣成市| 项城市| 个旧市| 库伦旗| 从江县| 贵港市| 天柱县| 汾西县| 霍林郭勒市| 察哈| 湖南省| 庆元县| 额敏县| 霞浦县| 揭阳市| 阳原县| 南乐县| 三穗县| 沙河市| 三明市| 招远市| 兴山县| 固始县| 土默特右旗| 田东县| 股票| 涪陵区| 元阳县| 合江县| 永福县| 保康县|