Domanda System.InvalidOperationException: stack vuoto


Una volta eseguita l'applicazione ASP.NET 4.x integrata in Visual Studio 2013, ricevo l'eccezione seguente.

Ho provato a disabilitare PageInspector rimuovendo l'assembly di controllo della pagina

<assemblies>
    <remove assembly="Microsoft.VisualStudio.Web.PageInspector.Loader, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</assemblies>

e aggiungendo questa configurazione alle impostazioni dell'app

<appSettings>
    <add key="PageInspector:ServerCodeMappingSupport" value="Disabled"/>
</appSettings>

Niente ha aiutato.

[/Pages/TargetPage.aspx] System.Web.HttpException (0x80004005): Exception of type 'System.Web.HttpException' was thrown. ---> System.Web.HttpUnhandledException (0x80004005): Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> System.InvalidOperationException: Stack empty.
   at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource)
   at System.Collections.Generic.Stack`1.Pop()
   at Microsoft.VisualStudio.Web.PageInspector.Runtime.WebForms.SelectionMappingRenderTraceListener.EndRendering(TextWriter writer, Object renderedObject)
   at System.Web.UI.RenderTraceListener.RenderTraceListenerList.EndRendering(TextWriter writer, Object renderedObject)
   at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
   at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter)
   at System.Web.UI.Control.RenderControl(HtmlTextWriter writer)
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.HandleError(Exception e)
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.LegacyPageAsyncInfo.<CallHandlersPossiblyUnderLock>b__32(Object o)
   at System.Web.HttpContext.InvokeCancellableCallback(WaitCallback callback, Object state)
   at System.Web.UI.Page.LegacyPageAsyncInfo.CallHandlersPossiblyUnderLock(Boolean onPageThread)
   at System.Web.UI.Page.LegacyPageAsyncInfo.CallHandlers(Boolean onPageThread)
   at System.Web.HttpAsyncResult.End()
   at System.Web.UI.Page.LegacyAsyncPageEndProcessRequest(IAsyncResult result)
   at System.Web.UI.Page.AsyncPageEndProcessRequest(IAsyncResult result)

C'è un modo per evitare l'eccezione? Grazie mille per qualsiasi suggerimento


23
2017-12-05 17:20


origine


risposte:


Ci sono diversi motivi per cui il

System.Web.HttpUnhandledException (0x80004005): Exception of type 'System.Web.HttpUnhandledException' was thrown. -
System.InvalidOperationException: Stack empty.
Microsoft.VisualStudio.Web.PageInspector.Runtime.WebForms.SelectionMappingRenderTraceListener.EndRendering(TextWriter writer, Object renderedObject)
...

Dopo aver aggiunto come proposto:

 <appSettings>
   <add key="PageInspector:ServerCodeMappingSupport" value="Disabled"/>
   ...
 </appSettings>

Ho notato che avevo duplicato l'elemento selezionato in un elenco a discesa che creava il problema.


7
2017-07-31 13:08



Ho disabilitato il collegamento del browser in VS 2013 e sono stato in grado di vedere la causa effettiva dell'errore. Di solito è qualcosa di fondamentale quando viene impostato il collegamento del browser. Puoi vedere come disabilitarlo qui: http://www.poconosystems.com/software-development/how-to-disable-browser-link-in-visual-studio-2013/


21
2017-10-24 09:48



Questo può succedere se il AssociatedControlID su un'etichetta è associato a un controllo che non può essere trovato.


20
2018-04-25 11:14



Spero che questo aiuti qualcuno.

Stavo ricevendo questo errore quando la mia asp:panel ha un pulsante predefinito dire XYZ e ho modificato il nome XYZ e ho dimenticato di cambiare il nome del pulsante di default nel pannello.


5
2017-12-19 14:53



Ho trovato il problema. È stato modificato il modo in cui generare ID di controlli in GridView da predefinito a

ClientIDMode="Predictable" ClientIDRowSuffix="ID"

Che ha provocato l'eccezione. Non sono sicuro del motivo per cui la vera eccezione è stata nascosta dallo stack PageInspector vuoto. Il ripristino della modifica all'originale ha risolto il problema.

Ora l'eccezione è diversa (ma una volta che le impostazioni di GridView sono tornate all'originale, anche questa scompare)

System.ArgumentException: An entry with the same key already exists.

4
2017-12-06 09:25



Ho anche visto questo problema in alcune app Web in esecuzione su macchine di sviluppo utilizzando Visual Studio 2013 con "Browser Link" abilitato.

In più casi che ho visto, lasciando attivato Browser Link causa tutti i tipi di problemi, sia script client e avvisi di sicurezza, sia eccezioni del server come questo (cosa fastidiosa è che sembra essere abilitato di default, grazie a Msft!)


3
2017-10-07 21:43



Ho avuto la stessa eccezione, ma nel mio caso il problema era che mancava quanto segue:

<form runat="server">
</form>

2
2017-07-31 01:31



Nel mio caso (ASP.NET 4.6, Visual Studio 2015) Ho commentato un controllo testo asp e aggiunto un nuovo elenco a discesa asp ma non ho aggiornato il AssociatedControlID dell'etichetta associata.

cambiando il AssociatedControlID all'ID dell'elenco a discesa dell'elenco appena aggiunto, il problema è stato risolto.


2
2018-05-26 17:07