asp.net - tutorial - System.InvalidOperationException: Pila vacía
asp.net web forms tutorial (11)
Comenzamos VisualStudio 2015 (vs2015) desde el archivo de solución VisualStudio 2012 y mientras construíamos todos los proyectos no se compilaron. Esto se debió a la opción Habilitar enlace del navegador habilitada de manera predeterminada. Inhabilité la opción Habilitar enlace de navegador y volví a construir la solución que creó todos los proyectos con éxito. Después de esto, encendí la url en un navegador y ¡Boom funcionó! Para aquellos que tienen un escenario similar al mío. darle un giro !
Una vez que ejecuto la aplicación ASP.NET 4.x incorporada en Visual Studio 2013 obtengo la siguiente excepción.
Intenté desactivar el PageInspector eliminando el ensamblaje del inspector de página
<assemblies>
<remove assembly="Microsoft.VisualStudio.Web.PageInspector.Loader, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</assemblies>
y agregando esta configuración a la configuración de la aplicación
<appSettings>
<add key="PageInspector:ServerCodeMappingSupport" value="Disabled"/>
</appSettings>
Nada ayudó.
[/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)
¿Hay alguna forma de evitar la excepción? Muchas gracias por cualquier sugerencia
En mi caso (ASP.NET 4.6, Visual Studio 2015) comenté un control de texto asp y agregué una nueva lista desplegable de asp pero no actualicé el AssociatedControlID de la etiqueta asociada.
al cambiar AssociatedControlID a la lista de la lista desplegable de asp recién agregada, mi problema se solucionó.
En mi caso, debido a que tenía tantos problemas para migrar un sitio web de VS2002 a VS2015, decidí crear un nuevo proyecto en VS2015 y transferir todos los formularios web desde el proyecto anterior (VS2002) al nuevo (VS2015).
El nuevo proyecto tenía una página Site.Master, que ya tiene una etiqueta. Debido a que estaba transfiriendo formularios web antiguos sin modificaciones, también tenían una etiqueta, por lo que cada página que intenta cargar tenía dos etiquetas adentro.
Cuando eliminé la etiqueta en cada página, dejando solo la de la página Site.Master, se solucionó el problema.
Espero que esto ayude.
Eso me sucedió cuando agregué un nuevo <asp:Panel>
a mi página y configuré el DefaultButton
en un botón fuera del panel (por error). Error solucionado cuando cambié DefaultButton
a otro dentro del panel.
Espero que esto ayude a alguien.
Recibí este error cuando mi asp:panel
tiene un botón predeterminado, diga XYZ y modifiqué el nombre XYZ y olvidé cambiar el nombre del botón predeterminado en el panel.
Esto puede suceder si AssociatedControlID
en una etiqueta está asociado con un control que no se puede encontrar.
Hay múltiples razones por las cuales
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)
...
Después de agregar según lo propuesto:
<appSettings>
<add key="PageInspector:ServerCodeMappingSupport" value="Disabled"/>
...
</appSettings>
Noté que había duplicado el elemento seleccionado en una lista desplegable para crear el problema.
He encontrado el problema. Se modificó la manera de generar ID de controles en GridView de forma predeterminada a
ClientIDMode="Predictable" ClientIDRowSuffix="ID"
Que resultó en la excepción. No estoy seguro de por qué la verdadera excepción fue oculta por la pila de PageInspector vacía. Solo revertir el cambio al original resolvió el problema.
Ahora la excepción es diferente (pero una vez que la configuración de GridView vuelve a ser original, esta también desaparece)
System.ArgumentException: An entry with the same key already exists.
Inhabilité el enlace del navegador en VS 2013 y pude ver la causa real del error. Por lo general, es algo subyacente cuando se establece el enlace del navegador. Puede ver cómo deshabilitarlo aquí: http://www.poconosystems.com/software-development/how-to-disable-browser-link-in-visual-studio-2013/
También he visto este problema en algunas aplicaciones web que se ejecutan en máquinas de desarrollo usando Visual Studio 2013 con el "Enlace del navegador" habilitado.
En varios casos que he visto, dejar el enlace del navegador habilitado provoca todo tipo de problemas, tanto el script del cliente como las advertencias de seguridad, y las excepciones del servidor como esta (lo molesto es que parece estar habilitado de manera predeterminada, ¡gracias Msft!)
Tuve la misma excepción, pero en mi caso el problema era que faltaba lo siguiente:
<form runat="server">
</form>