using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
using System.Web;

/**////
/// 定义原始数据EventArgs,便于在截获完整数据后,由事件传递数据
///

{
private
public RawDataEventArgs(string SourceCode)
{
sourceCode = SourceCode;
}
public
{
get
{ return sourceCode; }
set
{
sourceCode = value;
}
}
}
public
{
Stream responseStream;
long position;
StringBuilder responseHtml;

/**////
/// 当原始数据采集成功后激发。
///

public RawFilter(Stream inputStream)
{
responseStream = inputStream;
responseHtml =
}
//实现Stream 虚方法


public
{
get
{
return
}
}
public
{
get
{
return
}
}
public
{
get
{
return
}
}
public
{
responseStream.Close();
}
public
{
responseStream.Flush();
}
public
{
get
{
return
}
}
public
{
get
{
return position;
}
set
{
position = value;
}
}
public
{
return responseStream.Read(buffer, offset,
count);
}
public
{
return responseStream.Seek(offset, origin);
}
public
{
responseStream.SetLength(length);
}
#endregion
//关键的点,在HttpResponse
输入内容的时候,一定会调用此方法输入数据,所以要在此方法内截获数据

{
string strBuffer = System.Text.UTF8Encoding.UTF8.GetString(buffer,
offset, count);
//采用正则,检查输入的是否有页面结束符</html>
Regex eof =
if (!eof.IsMatch(strBuffer))
{
//页面没有输出完毕,继续追加内容
responseHtml.Append(strBuffer);
}
else
{
//页面输出已经完毕,截获内容
responseHtml.Append(strBuffer);
string finalHtml = responseHtml.ToString();
//激发数据已经获取事件
OnRawDataRecordedEvent(this, new RawDataEventArgs(finalHtml));
//继续传递要发出的内容写入流

responseStream.Write(data, 0,
data.Length);
}
}
}
using System;
using System.Web;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Diagnostics;
public
{
IHttpModule 成员#region IHttpModule 成员
public
{
}
public
{
//绑定事件,在对此请求处理过程全部结束后进行过滤操作
context.ReleaseRequestState +=
}
#endregion

/**////
/// 对此HTTP请求处理的过程全部结束
///
///
///

{
HttpApplication
application = (HttpApplication)sender;
//这里需要针对ASPX页面进行拦截,测试发现如果不这么做,Wap
访问站点图片容易显示为X,奇怪
if (temp.Length >
{
//装配过滤器
application.Response.Filter =
//绑定过滤器事件
RawFilter filter = (RawFilter)application.Response.Filter;
filter.OnRawDataRecordedEvent +=
}
}

/**////
/// 当原始数据采集到以后,入库
///
///
///

{
string allcode = e.SourceCode;
WapSite.SiteDataClass
wapdata =
wapdata.WriteRawDataLog(allcode);
}
}

<httpModules>
<add name="RawDataModule" type="HttpRawDataModule"/>
</httpModules>
</system.web>.net中自定义过滤器对Response内容进行处理,布布扣,bubuko.com
原文:http://www.cnblogs.com/moonvan/p/3578814.html