HttpRequest.Filter プロパティ

現在の入力ストリームを読み取るときに使用するフィルタを取得または設定します。

名前空間: System.Web
アセンブリ: System.Web (system.web.dll 内)

構文

'宣言
Public Property Filter As Stream
'使用
Dim instance As HttpRequest
Dim value As Stream

value = instance.Filter

instance.Filter = value
public Stream Filter { get; set; }
public:
property Stream^ Filter {
    Stream^ get ();
    void set (Stream^ value);
}
/** @property */
public Stream get_Filter ()

/** @property */
public void set_Filter (Stream value)
public function get Filter () : Stream

public function set Filter (value : Stream)
適用できません。

プロパティ値

フィルタとして使用される Stream オブジェクト。

例外

例外の種類 条件

HttpException

指定された Stream が無効です。

使用例

InputStream のフィルタ処理をする新しい 2 つのクラス、QQQ1QQQ2 を作成するコード例を次に示します。作成した 2 つのクラスを ASP.NET アプリケーションのディレクトリの Global.asax ファイル内に配置して、アプリケーション内のすべての ASP.NET Web ページに対するすべての入力がフィルタ処理されるようにします。

<%@ Page language="VB" %>
<%@ Import namespace="System.Text" %>
<%@ Import namespace="System.IO" %>

<script runat="server">
' This example is meant to be added to a Global.asax file.

Sub Application_BeginRequest()
   Request.Filter = New QQQ1(Request.Filter)
   Request.Filter = New QQQ2(Request.Filter)
End Sub

' The class QQQ1 changes all lower case alpha chars to upper case.
Public Class QQQ1
   Inherits Stream

   Private _sink As Stream

   Public Sub New(sink As Stream)
      _sink = sink
   End Sub

   ' All MustOverride interface members must be included.
   Public Overrides ReadOnly Property CanRead() As Boolean
      Get 
         Return True
      End Get
   End Property

   Public Overrides ReadOnly Property CanSeek() As Boolean
      Get
         Return False
      End Get
   End Property

   Public Overrides ReadOnly Property CanWrite() As Boolean
      Get
         Return False
      End Get
   End Property

   Public Overrides ReadOnly Property Length() As Long
      Get
         Return _sink.Length
      End Get
   End Property

   Public Overrides Property Position() As Long
      Get
         Return _sink.Position
      End Get
      Set 
         Throw New NotSupportedException()
      End Set
   End Property

   Public Overrides Function Read(ByVal buffer() As Byte, ByVal offset As Integer, ByVal count As Integer) As Integer
      Dim c As Integer = _sink.Read(buffer, offset, count)
      Dim i As Integer
      For i = 0 To count - 1
         If buffer(offset+i) >= Asc("a") And buffer(offset+i) <= Asc("z") Then
            buffer(offset+i) = buffer(offset+i) - (Asc("a")-Asc("A"))
         End If
      Next i
      Return c
   End Function

   Public Overrides Function Seek(ByVal offset As Long, ByVal direction As System.IO.SeekOrigin) As Long
        Throw New NotSupportedException()
   End Function

   Public Overrides Sub SetLength(ByVal length As Long)
      Throw New NotSupportedException()
   End Sub

   Public Overrides Sub Close()
      _sink.Close()
   End Sub

   Public Overrides Sub Flush()
      _sink.Flush()
   End Sub

   Public Overrides Sub Write(ByVal buffer() As Byte, ByVal offset As Integer, ByVal count As Integer)
      Throw New NotSupportedException()
   End Sub
End Class


' The class QQQ2 changes all E characters to asterisks.
class QQQ2 
   Inherits Stream
    
   Private _sink As Stream

   Public Sub New(sink As Stream)
      _sink = sink
   End Sub

   ' All MustOverride interface members must be included.
   Public Overrides ReadOnly Property CanRead() As Boolean
      Get  
         Return true
      End Get
   End Property

   Public Overrides ReadOnly Property CanSeek() As Boolean
      Get
         Return False
      End Get
   End Property

   Public Overrides ReadOnly Property CanWrite() As Boolean
      Get 
         Return False
      End Get
   End Property

   Public Overrides ReadOnly Property Length() As Long
      Get
         Return _sink.Length
      End Get
   End Property

   Public Overrides Property Position() As Long
      Get
         Return _sink.Position
      End Get  
      Set 
         Throw New NotSupportedException()
      End Set
   End Property

   Public Overrides Function Read(ByVal buffer() As Byte, ByVal offset As Integer, ByVal count As Integer) As Integer
      Dim c As Integer = _sink.Read(buffer, offset, count)
      Dim i As Integer
      For i = 0 To count-1
         If buffer(i) = Asc("E") Then
            buffer(i) = Asc("*")
         End If
      Next i
      Return c
   End Function

   Public Overrides Function Seek(ByVal offset As Long, ByVal direction As System.IO.SeekOrigin) As Long
      Throw New NotSupportedException()
   End Function

   Public Overrides Sub SetLength(length As Long)
      Throw New NotSupportedException()
   End Sub

   Public Overrides Sub Close()
      _sink.Close()
   End Sub

   Public Overrides Sub Flush()
      _sink.Flush()
   End Sub

   Public Overrides Sub Write(ByVal buffer() As Byte, ByVal offset As Integer, ByVal count As Integer)
      Throw New NotSupportedException()
   End Sub
End Class


'____________________________________________________________________

' 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 = VB %>
'<%@ IMPORT namespace="System.IO" %>

'<html>
'<Script runat=server>

'   Sub Page_Load()
'      Dim str As Stream, strmContents As String
'      Dim counter, strLen As Integer
 
      ' Create a Stream object.
'      str = Request.InputStream

      ' Find number of bytes in stream.
'      strLen = CInt(str.Length)

      ' Create a byte array.
'      Dim strArr(strLen) As Byte 

      ' Read stream into byte array.
'      str.Read(strArr,0,strLen) 
 
      ' Convert byte array to a text string.
'      For counter = 0 To strLen-1
'         strmContents = strmContents & Chr(strArr(counter))
'      Next counter

'      Response.Write("Contents of Filtered InputStream: " & strmContents)
'   End Sub

' </html>

</script>
<%@ 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>
<%@ Page language="VJ#" %>
<%@ 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() 
{
    get_Request().set_Filter(new QQQ1(get_Request().get_Filter()));
    get_Request().set_Filter(new QQQ2(get_Request().get_Filter()));
} //Application_BeginRequest

class QQQ1 extends Stream
{
    private Stream _sink;
    
    public QQQ1(Stream sink) 
    {
        _sink = sink;
    } //QQQ1
   
    /** @property 
     */
    public boolean get_CanRead()
    {
        return true;
    } //get_CanRead
   
    /** @property 
     */
    public boolean get_CanSeek()
    {
        return false;
    } //get_CanSeek
   
    /** @property 
     */
    public boolean get_CanWrite()
    {
        return false;
    }//get_CanWrite
   
    /** @property 
     */
    public long get_Length()
    {
        return _sink.get_Length();
    } //get_Length
   
    /** @property
     */
    public long get_Position()
    {
        return _sink.get_Position();
    } //get_Position
   
    /** @property
     */
    public void set_Position (long value)
    {
        throw new NotSupportedException();
    } //set_Position
   
    public int Read(ubyte 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;
    } //Read
   
    public long Seek(long offset, System.IO.SeekOrigin direction) 
    {
        throw new NotSupportedException();
    } //Seek
   
    public void SetLength(long length)
    {
        throw new NotSupportedException();
    } //SetLength
   
    public void Close()
    {
        _sink.Close();
    } //Close
   
    public void Flush()
    {
        _sink.Flush();
    } //Flush
   
   public void Write(ubyte buffer[], int offset, int count)
   {
        throw new NotSupportedException();
   } //Write
} //QQQ1

class QQQ2 extends Stream
{
    private Stream _sink;
      
    public QQQ2(Stream sink)
    {
        _sink = sink;
    } //QQQ2
      
    /** @property 
     */
    public boolean get_CanRead()
    {
        return true;
    } //get_CanRead
   
    /** @property
     */
    public boolean get_CanSeek()
    {
        return false;
    } //get_CanSeek
   
    /** @property 
     */
    public boolean get_CanWrite()
    {
        return false;
    } //get_CanWrite
      
    /** @property 
     */
    public long get_Length()
    {
        return _sink.get_Length();
    } //get_Length
   
    /** @property
     */
    public long get_Position()
    {
        return _sink.get_Position();
    } //get_Position
    
    /** @property 
     */
    public void set_Position (long value)
    {
        throw new NotSupportedException();
    } //set_Position
      
    public int Read(ubyte 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] = (ubyte) '*';
            }
            else {
                if (buffer[i] == 'e') {
                    buffer[i]= (ubyte)'#';
                }
            }
        } 
        return c;
    } //Read
   
    public long Seek(long offset, System.IO.SeekOrigin direction) 
    {
        throw new NotSupportedException();
    } //Seek
   
    public void SetLength(long length) 
    {
        throw new NotSupportedException();
    } //SetLength
   
    public void Close() 
    {
        _sink.Close();
    } //Close
   
    public void Flush()
    {
        _sink.Flush();
    } //Flush
   
    public void Write(ubyte buffer[], int offset, int count) 
    {
        throw new NotSupportedException();
    } //Write
} //QQQ2

/*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 = VJ# %>
<%@ IMPORT namespace="System.IO" %>

<html>
<Script runat=server>
    void Page_Load()
    {
        // Create a Stream object to capture entire InputStream from browser.
        Stream str = get_Request().get_InputStream();
        // Find number of bytes in stream.
        int strLen = (int)(str.get_Length());
        // Create a byte array to hold stream.
        ubyte bArr[] = new ubyte[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 + (System.Char)(bArr.get_Item(i));
        }
        // Display filtered stream in browser.
        get_Response().Write("Contents of Filtered InputStream: <br>"
            + strmContents);
    } //Page_Load

______________________________________________________________________*/
</script>

プラットフォーム

Windows 98,Windows Server 2000 SP4,Windows CE,Windows Millennium Edition,Windows Mobile for Pocket PC,Windows Mobile for Smartphone,Windows Server 2003,Windows XP Media Center Edition,Windows XP Professional x64 Edition,Windows XP SP2,Windows XP Starter Edition

Microsoft .NET Framework 3.0 は Windows Vista,Microsoft Windows XP SP2,および Windows Server 2003 SP1 でサポートされています。

バージョン情報

.NET Framework

サポート対象 : 3.0,2.0,1.1,1.0

参照

関連項目

HttpRequest クラス
HttpRequest メンバ
System.Web 名前空間