jamietre / CsQuery

CsQuery is a complete CSS selector engine, HTML parser, and jQuery port for C# and .NET 4.
Other
1.15k stars 249 forks source link

ArgumentOutOfRangeException when calling "Render()" method #205

Open Israel4Ever opened 9 years ago

Israel4Ever commented 9 years ago

Hi, I'm getting this Exception while calling the "Render()" method:

System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

Stack trace:

   at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
   at System.Collections.Generic.List`1.get_Item(Int32 index)
   at CsQuery.HtmlParser.HtmlData.TokenName(UInt16 tokenId)
   at CsQuery.Implementation.DomElement.get_ClassName()
   at CsQuery.Implementation.DomElement.d__38.MoveNext()
   at CsQuery.Output.FormatDefault.RenderElementInternal(IDomObject element, TextWriter writer, Boolean includeChildren)
   at CsQuery.Output.FormatDefault.RenderStack(TextWriter writer)
   at CsQuery.Output.FormatDefault.RenderChildren(IDomObject element, TextWriter writer)
   at CsQuery.Output.FormatDefault.Render(IDomObject node)
   at CsQuery.Implementation.DomObject.Render(IOutputFormatter formatter)
   at CsQuery.Implementation.DomObject.Render()
   at CsQuery.CQ.Render()
   at **** in ***:line 61

This is my code lines:

dom["style, script, and some more..."].Remove();
dom.Render(); // <---- BOOM

It's seems impossible to repro this issue. Tried few times with same URL. Even when it's happen, I'm change the "next code line" (next instruction pointer) to the "Render()" code line agian - and now it's working.

My code is running with Multi-Threading. I'm pretty sure that this making problems...

How I can fix this?

Thank you.

cn-ml commented 4 years ago

I got that error as well. Here is my stack trace if it helps.

Unhandled exception. System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')
   at CsQuery.HtmlParser.HtmlData.TokenName(UInt16 tokenId)
   at CsQuery.Implementation.DomElement.get_ClassName()
   at CsQuery.Implementation.DomElement.<AttributesCollection>d__38.MoveNext()
   at CsQuery.Output.FormatDefault.RenderElementInternal(IDomObject element, TextWriter writer, Boolean includeChildren)
   at CsQuery.Output.FormatDefault.RenderStack(TextWriter writer)
   at CsQuery.Output.FormatDefault.Render(IDomObject node)
   at "myInternalCall CQ.Render()"