zoukankan      html  css  js  c++  java
  • HttpRequest.Filter 属性

     获取或设置在读取当前输入流时要使用的筛选器。

    下面的代码示例创建两个新类,即,筛选 InputStreamQQQ1QQQ2。将这些类放入 ASP.NET 应用程序目录中的 Global.asax 文件中,以便筛选应用程序中所有 ASP.NET 网页中的全部输入。

    <%@ Page language="c#" %>
    <%@ Import namespace="System.Text" %>
    <%@ Import namespace="System.IO" %> <script runat="server">

    // This code is to be added to a Global.asax file.

    public void Application_BeginRequest() { Request.Filter = new QQQ1(Request.Filter);
       Request.Filter = new QQQ2(Request.Filter);
    }

    class QQQ1 : Stream
    {
        private Stream _sink;

        public QQQ1(Stream sink)
        {
            _sink = sink;
        }

        public override bool CanRead
        {
            get { return true; }
        }

        public override bool CanSeek
        {
            get { return false; }
        }

        public override bool CanWrite
        {
            get { return false; }
        }

        public override long Length
        {
            get { return _sink.Length; }
        }

        public override long Position
        {
            get { return _sink.Position; }
            set { throw new NotSupportedException(); }
        }

        public override int Read(byte[] buffer, int offset, int count)
        {
    int c = _sink.Read(buffer, offset, count);

            for (int i = 0; i < count; i++)
            {
                if (buffer[offset+i] >= 'a' && buffer[offset+i] <= 'z')
                    buffer[offset+i] -= ('a'-'A');
            }

            return c;
        }

        public override long Seek(long offset, System.IO.SeekOrigin direction)
        {
            throw new NotSupportedException();
        }

        public override void SetLength(long length)
        {
            throw new NotSupportedException();
        }

        public override void Close()
        {
            _sink.Close();
        }

        public override void Flush()
        {
            _sink.Flush();
        }

        public override void Write(byte[] buffer, int offset, int count)
        {
    throw new NotSupportedException();
        }
    }

    class QQQ2 : Stream
    {
        private Stream _sink;

        public QQQ2(Stream sink)
        {
            _sink = sink;
        }

        public override bool CanRead
        {
            get { return true; }
        }

        public override bool CanSeek
        {
            get { return false; }
        }

        public override bool CanWrite
        {
            get { return false; }
        }

        public override long Length
        {
            get { return _sink.Length; }
        }

        public override long Position
        {
            get { return _sink.Position; }
            set { throw new NotSupportedException(); }
        }

        public override int Read(byte[] buffer, int offset, int count)
        {
    int c = _sink.Read(buffer, offset, count);

            for (int i = 0; i < count; i++)
            {
                if (buffer[i] == 'E')
                    buffer[i] = (byte)'*';
                else if (buffer[i] == 'e')
                    buffer[i] = (byte)'#';
            }
            return c;
        }

        public override long Seek(long offset, System.IO.SeekOrigin direction)
        {
            throw new NotSupportedException();
        }

        public override void SetLength(long length)
        {
            throw new NotSupportedException();
        }

        public override void Close()
        {
            _sink.Close();
        }

        public override void Flush()
        {
            _sink.Flush();
        }

        public override void Write(byte[] buffer, int offset, int count)
        {
    throw new NotSupportedException();
        }
    }


    /*____________________________________________________________________

    This ASP.NET page uses the request filter to modify all text sent by the
    browser in Request.InputStream. To test the filter, use this page to take
    the POSTed output from a data entry page using a tag such as:
    <form method="POST" action="ThisTestPage.aspx">


    <%@ PAGE LANGUAGE = C# %>
    <%@ IMPORT namespace="System.IO" %>

    <html>
    <Script runat=server>
       void Page_Load()
       {

          // Create a Stream object to capture entire InputStream from browser.
          Stream str = Request.InputStream;

          // Find number of bytes in stream.
          int strLen = (int)str.Length;

          // Create a byte array to hold stream.
          byte[] bArr = new byte[strLen];

          // Read stream into byte array.
          str.Read(bArr,0,strLen);

          // Convert byte array to a text string.
          String strmContents="";
          for(int i = 0; i < strLen; i++)
             strmContents = strmContents + (Char)bArr[i];

          // Display filtered stream in browser.
          Response.Write("Contents of Filtered InputStream: <br>" + strmContents);
       }
    ______________________________________________________________________*/


    </script>

  • 相关阅读:
    无线网络技术知识点
    中国高校计算机大赛—网络技术挑战赛
    实验二 软件工程个人项目
    实验一 软件工程准备
    2018年春季软件工程教学设计(初稿)
    2017-2018春季学期软件工程教学资源目录
    2017-2018春季学期软件工程教学纲要
    如何解决Android Studio解决DDMS真机/模拟器无法查看data目录问题
    GitHub的Windows客户端的使用教程
    2017面向对象程序设计(JAVA)课程总结
  • 原文地址:https://www.cnblogs.com/luoyaoquan/p/2027302.html
Copyright © 2011-2022 走看看