| Forum: VB.NET |
Thema:
Re: HTML-Ausgabe umleiten |
Von:
Klaus Holster (
12.07.2004 09:53) |
Hallo Tobi,
mit Response.Filter kann man den fertigen HTML-Code in der Form wie ihn ASP.NET erzeugt hat, abfangen und selbst verarbeiten.
Dazu muss eine Filter-Klasse erstellt werden und in der Global.asax eine Instanz davon an Reguest.Filter zugewiesen werden:
Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
Response.Filter = New PageCaptureFilter(Response.Filter)
End Sub
Die Filterklasse kann z.B. so aussehen:
Public Class PageCaptureFilter
Inherits System.IO.Stream
Private ResponseStream As System.IO.Stream
Private CapturedResponse As String
Public Sub New(ByVal InStream As System.IO.Stream)
ResponseStream = InStream
End Sub
Public Overrides Sub Write(ByVal buffer() As Byte, _
ByVal offset As Integer, _
ByVal count As Integer)
Dim ResponseAsString As String = System.Text.UTF8Encoding.UTF8.GetString(buffer, offset, count)
CapturedResponse += ResponseAsString
ResponseStream.Write(buffer, offset, count)
End Sub
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 True
End Get
End Property
Public Overrides Sub Flush()
Dim SW As New System.IO.StreamWriter("c:\scratch\LastCapturedPage.html", False, System.Text.Encoding.UTF8)
SW.Write(CapturedResponse)
SW.Close()
ResponseStream.Flush()
End Sub
Public Overrides ReadOnly Property Length() As Long
Get
Return 0
End Get
End Property
Private pos As Long
Public Overrides Property Position() As Long
Get
Return pos
End Get
Set(ByVal Value As Long)
pos = Value
End Set
End Property
Public Overrides Function Read(ByVal buffer() As Byte, ByVal offset As Integer, ByVal count As Integer) As Integer
Return ResponseStream.Read(buffer, offset, count)
End Function
Public Overrides Function Seek(ByVal offset As Long, ByVal origin As System.IO.SeekOrigin) As Long
Return ResponseStream.Seek(offset, origin)
End Function
Public Overrides Sub SetLength(ByVal value As Long)
ResponseStream.SetLength(value)
End Sub
End Class
Schöne Grüße,
Klaus
| Betreff |
Von |
Datum |
|
|
|
|
G.
Guest
|
12.07.2004 15:36 |
|
|
  |
Re: HTML-Ausgabe umleiten
| Hallo nochmal!<br><br>Ich hab da doch ne Frage zu:<br><br>und zwar rufe ich<br>Response.Filter = New PageCaptureFilter(Response.Filter)<br>nicht in der global.asax auf, sonder im PreRender der aspx.<br><br>Das klappt... |
 |
 |
 |
|
|
G.
Guest
|
17.07.2004 11:07 |
|
|
|
Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!