Men det fina men ASP.NET är ju att du inte är bunden till ett språk.
Du kan ju använda det C#-exempel som finns här på wF även om dina andra sidor är i VB.
http://www.webforum.nu/showthread.php?s=&forumid=191&threadid=77146
2 svar · 230 visningar · startad av Daniel78
Men det fina men ASP.NET är ju att du inte är bunden till ett språk.
Du kan ju använda det C#-exempel som finns här på wF även om dina andra sidor är i VB.
http://www.webforum.nu/showthread.php?s=&forumid=191&threadid=77146
Ok, men hur funkar det då, ska jag kompilera C# exemplet till en egen dll och importera den eller, och hur i så fall?
För övrigt så konverterade jag C# exemplet till VB genom en konverterare. Denna kod har jag sedan lagt i global.asax och det funkar bra, förutom att jag måste avmarkera Buffer.BlockCopy(buffer, offset, data, 0, count) eftersom detta ej verkar vara tillgängligt i VB?
Här är VB klassen
Public Class XHTMLStrictFilter
Inherits Stream
Private _sink As Stream
Private _position As Long
Private Shared _regForm As New Regex("<form .*name=.* .*>", RegexOptions.Compiled Or RegexOptions.IgnoreCase)
Private Shared _regNameReplace As New Regex("name=[^ ]*", RegexOptions.Compiled Or RegexOptions.IgnoreCase)
Private Shared _regViewState As New Regex("<input type=""hidden"" name=""__VIEWSTATE"" value="".*"" />", RegexOptions.Compiled Or RegexOptions.IgnoreCase)
Private _formFix As Boolean
Private _viewStateFix As Boolean
Public Sub New(ByVal sink As Stream)
_sink = sink
End Sub 'New
' The following members of Stream must be overriden.
Public Overrides ReadOnly Property CanRead() As Boolean
Get
Return True
End Get
End Property
Public Overrides ReadOnly Property CanSeek() As Boolean
Get
Return True
End Get
End Property
Public Overrides ReadOnly Property CanWrite() As Boolean
Get
Return True
End Get
End Property
Public Overrides ReadOnly Property Length() As Long
Get
Return 0
End Get
End Property
Public Overrides Property Position() As Long
Get
Return _position
End Get
Set(ByVal Value As Long)
_position = Value
End Set
End Property
Public Overrides Function Seek(ByVal offset As Long, ByVal direction As System.IO.SeekOrigin) As Long
Return _sink.Seek(offset, direction)
End Function 'Seek
Public Overrides Sub SetLength(ByVal length As Long)
_sink.SetLength(length)
End Sub 'SetLength
Public Overrides Sub Close()
_sink.Close()
End Sub 'Close
Public Overrides Sub Flush()
_sink.Flush()
End Sub 'Flush
Public Overrides Function Read(ByVal buffer() As Byte, ByVal offset As Integer, ByVal count As Integer) As Integer
Return _sink.Read(buffer, offset, count)
End Function 'Read
' The Write method actually does the filtering.
Public Overrides Sub Write(ByVal buffer() As Byte, ByVal offset As Integer, ByVal count As Integer)
Dim data() As Byte
If Not _formFix Or Not _viewStateFix Then
Dim htmlOutput As String = System.Text.UTF8Encoding.UTF8.GetString(buffer)
Dim length As Integer = htmlOutput.Length
If Not _formFix And _regForm.IsMatch(htmlOutput) Then
Dim formMatch As String = _regForm.Match(htmlOutput).Value
htmlOutput = Regex.Replace(htmlOutput, formMatch, _regNameReplace.Replace(formMatch, ""), RegexOptions.IgnoreCase)
_formFix = True
End If
If Not _viewStateFix And _regViewState.IsMatch(htmlOutput) Then
Dim viewStateMatch As String = _regViewState.Match(htmlOutput).Value
htmlOutput = Regex.Replace(htmlOutput, viewStateMatch, "<div>" + viewStateMatch + "</div>", RegexOptions.IgnoreCase)
_viewStateFix = True
End If
data = System.Text.UTF8Encoding.UTF8.GetBytes(htmlOutput)
count -= length - htmlOutput.Length
Else
data = New Byte(count) {}
'Buffer.BlockCopy(buffer, offset, data, 0, count)
End If
_sink.Write(data, 0, count)
End Sub
End Class