herbrich19
Goto Top

Htmltextwriter stackoverflow exception

Hallo,

Ich versuche gerade ein ASP.NET Servercontrol zu programmieren. Jedoch bekomme ich einen Speicherüberlauf. Hier mal der Code
    Protected Overrides Sub Render(ByVal writer As HtmlTextWriter)
        Me.RenderBeginTag(writer)
        Me.RenderContents(writer)
        Me.RenderEndTag(writer)
    End Sub
    Protected Overrides Sub RenderContents(ByVal writer As HtmlTextWriter)
        writer.WriteLine("<ul>")  
        For Each item As KarowNavigatorItem In Me.NavItems
            If (Me.SublevelCssClass IsNot String.Empty AndAlso item.ChildItems.Count > 0) Then
                writer.Write("<li class=""" & Me.SublevelCssClass & """>") ' Happy Styckoverflow -.-  
            Else
                writer.Write("<li>")  
            End If
            writer.Write("<a href=""" & item.NavigateUrl & """>" & item.Text & "</a>")  
            If (item.ChildItems > 0) Then
                For Each child As KarowNavigatorItem In item.ChildItems
                    Me.RenderContentsX(child, writer)
                Next
            End If
            writer.WriteLine("</li>")  
        Next
        'Me.RenderItems(writer, Me.NavItems, True)  
        writer.WriteLine("</ul>")  
    End Sub
    Protected Sub RenderContentsX(ByVal node As KarowNavigatorItem, ByVal writer As HtmlTextWriter)
        'Dim hasChildren As Boolean = ()  
        If (Not Me.LayerCSS = Nothing) Then
            writer.Write("<ul class=""" & Me.LayerCSS & """>")  
        Else
            writer.Write("<ul>")  
        End If
        If (Me.NavItems > 0) Then
            For Each item As KarowNavigatorItem In Me.NavItems
                If (Me.SublevelCssClass IsNot String.Empty AndAlso item.ChildItems.Count > 0) Then
                    writer.Write("<li class=""" & Me.SublevelCssClass & """>")  
                Else
                    writer.Write("<li>")  
                End If
                writer.Write("<a href=""" & item.NavigateUrl & """>" & item.Text & "</a>")  
                If (item.ChildItems.Count > 0) Then
                    For Each child As KarowNavigatorItem In item.ChildItems
                        Me.RenderContentsX(child, writer)
                    Next
                End If
                writer.WriteLine("</li>")  
            Next
        End If
        writer.WriteLine("</ul>")  
        'Me.RenderItems(writer, Me.NavItems, True)  
    End Sub
    Public Overrides Sub RenderBeginTag(writer As HtmlTextWriter)
        writer.BeginRender()
        writer.WriteLine("<!--AnneKarow-->")  
        If (Me.CssClass IsNot String.Empty) Then
            writer.WriteLine("<nav class=""" & Me.CssClass & """/>")  
        Else
            writer.WriteLine("<nav>")  
        End If
    End Sub
    Public Overrides Sub RenderEndTag(writer As HtmlTextWriter)
        writer.WriteLine("<!--AnneKarow-->")  
        writer.WriteLine("</nav>")  
        writer.EndRender()
    End Sub

So, und in Zeile 122 Tritt der Fehler auf, das ist die Funktion RenderContentsX bei writer.Write("<li class=""" & Me.SublevelCssClass & """>") und beim Kopieren der Details der Exception bekomme ich folgendes
System.StackOverflowException ist aufgetreten.
  HResult=0x800703E9

Ich würde mich echt über schnelle Hilfe freuen, ich brüte schon die ganzen letzten Tage über diesen Problem. Ich verstehe auch nicht wie der htmltextwriter den Stack voll müllt Bekomme auch wen ich die normalen HTML Textwriter dinger Benutze folgendes Resultat:

10="uke_menu"  

Wo bei 10 für "class" steht (htmltextwriterAttribute.class) und im Quelltext kommt der Text dann auch schön vor den eigentlichen Tag was mich schon irritert. Hatte erst die Attribute und dann die Tags geschrieben (writeAtributte und renderBeginTag und klar am ende renderEndTag)

Ich bin gerade echt schon total am verzweifeln face-sad

Gruß an die IT-Welt,
J Herbrich

Content-ID: 342273

Url: https://administrator.de/contentid/342273

Ausgedruckt am: 25.11.2024 um 21:11 Uhr

rentner63
rentner63 03.07.2017 um 09:59:16 Uhr
Goto Top
Müsste es in der Zeile 27 nicht "Is Nothing" heißen?
Herbrich19
Herbrich19 03.07.2017 um 11:09:55 Uhr
Goto Top
Hallo,

Nein, die Abfrage in Zeile 27 entscheidet ob das submenu eine css klasse zugewiesen bekommt.

Gruß an die IT-Welt,
J Herbrich
atze187
atze187 04.07.2017 um 11:47:09 Uhr
Goto Top
  1. Welche Zeile ist denn Zeile 122?
  2. Ein Wirrwarr aus "Not ... = Nothing" und "IsNot". Bei Strings geht auch String.IsNullOrEmpty.