HttpRequest.Filter Property
.NET Framework 3.0
Gets or sets the filter to use when reading the current input stream.
Namespace: System.Web
Assembly: System.Web (in system.web.dll)
Assembly: System.Web (in system.web.dll)
'Declaration Public Property Filter As Stream 'Usage Dim instance As HttpRequest Dim value As Stream value = instance.Filter instance.Filter = value
/** @property */ public Stream get_Filter () /** @property */ public void set_Filter (Stream value)
public function get Filter () : Stream public function set Filter (value : Stream)
Not applicable.
Property Value
A Stream object to be used as the filter.The following code example creates two new classes, QQQ1 and QQQ2 that filter the InputStream. Put the classes into the Global.asax file in an ASP.NET application's directory so that all input for all ASP.NET Web pages in the application will be filtered.
<%@ 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="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>
Community Additions
ADD
Show: