asp.net2.0URL重写以及urlMappings问题(2)
点击次数:24 次 发布日期:2008-11-27 02:03:30 作者:源代码网
|
具体怎么样?各位DX看看就清楚了!!! 所有才有了这个ResponseFilter了,实现如下, public class ResponseFilter:System.IO.Stream { public ResponseFilter(System.IO.Stream sink,string _str) { _sink = sink; // // TODO: 在此处添加构造函数逻辑 // this.str = _str; } private string str = ""; private System.IO.Stream _sink; private long _position; private System.Text.Encoding end=System.Text.Encoding.GetEncoding("GB18030"); private System.Text.StringBuilder oOutput = new System.Text.StringBuilder(); // The following members of Stream must be overriden. public override bool CanRead { get { return true; } } public override bool CanSeek { get { return true; } } public override bool CanWrite { get { return true; } } 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 _sink.Seek(offset, direction); } public override void SetLength(long length) { _sink.SetLength(length); } public override void Close() { _sink.Close(); } public override void Flush() { _sink.Flush(); } public override int Read(byte[] buffer, int offset, int count) { return _sink.Read(buffer, offset, count); } // The Write method actually does the filtering. public override void Write(byte[] buffer, int offset, int count) { string szBuffer = System.Text.UTF8Encoding.UTF8.GetString(buffer, offset, count); string ap="action=""; int pos=-1; if ((pos=szBuffer.IndexOf(ap) )!= -1) { int epos = szBuffer.IndexOf(""", pos + ap.Length+1); if (epos != -1) { szBuffer= szBuffer.Remove(pos + ap.Length, epos - pos - ap.Length); } szBuffer = szBuffer.Insert(pos + ap.Length, this.str); byte[] data = System.Text.UTF8Encoding.UTF8.GetBytes(szBuffer); _sink.Write(data, 0, data.Length); } else { oOutput.Append(szBuffer); } //下面的这一段可以用来修改之间的内容; //Regex oEndFile = new Regex("", RegexOptions.IgnoreCase|RegexOptions.Compiled); //if (oEndFile.IsMatch(szBuffer)) //{ // //Append the last buffer of data // //附加上缓冲区中的最后一部分数据 // oOutput.Append(szBuffer); // //Get back the complete response for the client // //传回完整的客户端返回数据 // string szCompleteBuffer = oOutput.ToString().ToLower(); // int ipos = szCompleteBuffer.IndexOf("",ipos+7); // string sp = szCompleteBuffer.Substring(ipos+7, epos - ipos ); // szCompleteBuffer = szCompleteBuffer.Remove(ipos+7,sp.Length-7); // szCompleteBuffer = szCompleteBuffer.Insert(ipos + 7, "dhz"); // // szCompleteBuffer = szCompleteBuffer.Replace(sp, "dhz"); // //No match, so write out original data // //没有匹配,因此写入源代码 // byte[] data = System.Text.UTF8Encoding.UTF8.GetBytes(szCompleteBuffer); // _sink.Write(data, 0, data.Length); / 源代码网供稿. |
