Système.InvalidOperationException: Pile vide

une fois en cours D'exécution ASP.NET 4.X application construite dans Visual Studio 2013 je reçois l'exception ci-dessous.

j'ai essayé de désactiver le PageInspector en retirant l'ensemble de Page inspector

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

et ajouter cette configuration aux paramètres de l'application

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

Rien n'a aidé.

[/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)

y a-t-il un moyen d'éviter l'exception? Merci beaucoup pour toutes suggestions

23
demandé sur mybrave 2013-12-05 21:20:07

11 réponses

il y a plusieurs raisons pour lesquelles le

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)
...

après ajout proposé:

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

j'ai remarqué que j'avais dupliqué un élément sélectionné sur une liste déroulante créant le problème.

8
répondu fcm 2015-07-31 13:44:23

j'ai désactivé le lien du navigateur dans VS 2013 et j'ai pu voir la cause réelle de l'erreur. Il s'agit généralement de quelque chose sous-jacent lorsque le lien du navigateur est défini. Vous pouvez voir comment le désactiver ici: http://www.poconosystems.com/software-development/how-to-disable-browser-link-in-visual-studio-2013/

21
répondu Jason 2014-10-24 09:48:27

cela peut arriver si le AssociatedControlID sur une étiquette est associé à un contrôle introuvable.

20
répondu Sam Jones 2016-04-25 11:14:29

Espérons que cela aide quelqu'un.

j'ai eu cette erreur quand mon asp:panel a un bouton par défaut dire XYZ et j'ai modifié le nom XYZ et a oublié de changer le nom du bouton par défaut dans le panneau.

5
répondu Halim 2016-03-22 07:06:04

j'ai trouvé le problème. Il y a eu un changement dans la façon de générer les IDs des contrôles dans GridView de par défaut à

ClientIDMode="Predictable" ClientIDRowSuffix="ID"

ce qui a donné lieu à l'exception. Je ne sais pas pourquoi la vraie exception a été cachée par la pile PageInspector vide. Juste revenir le changement d'origine résolu le problème.

maintenant l'exception est différente (mais une fois que les paramètres de GridView sont de retour à l'original cette désapprobation aussi)

System.ArgumentException: An entry with the same key already exists.
4
répondu mybrave 2013-12-06 09:25:06

j'ai également vu ce problème dans certaines applications web tournant sur des machines dev en utilisant Visual Studio 2013 avec "Browser Link" activé.

dans de nombreux cas que j'ai vu, laisser le lien du navigateur activé provoque toutes sortes de problèmes, à la fois le script client et les avertissements de sécurité, et les exceptions du serveur comme celui-ci (chose ennuyeuse est qu'il semble être activé par défaut, merci Msft!)

3
répondu nothingisnecessary 2014-10-07 21:43:22

j'ai eu la même exception, mais dans mon cas, le problème était le suivant est manquant:

<form runat="server">
</form>
2
répondu Myster 2014-07-31 01:31:17

dans mon cas (ASP.NET 4.6, Visual Studio 2015) J'ai commenté un contrôle de texte asp et ajouté une nouvelle liste déroulante asp mais je n'ai pas mis à jour le code AssociatedControlID de l'étiquette associée.

lors de la modification de la directive AssociatedControlID à la liste déroulante asp nouvellement ajoutée, mon problème a été corrigé.

2
répondu Satbir 2016-05-26 17:07:54

nous avons commencé VisualStudio 2015 (vs2015) à partir de VisualStudio 2012 solution file et tout en construisant tous les projets n'ont pas construit. Cela était dû à L'option Activer le lien du navigateur activée par défaut. J'ai désactivé L'option Activer le lien du navigateur et j'ai reconstruit la solution qui a permis de construire tous les projets avec succès. Après cela j'ai allumé l'url dans un navigateur et Boom il a fonctionné! Pour ceux qui ont un scénario similaire au mien. donnez-lui un tourbillon !

0
répondu Syed belgam 2016-11-22 15:55:50

Qui s'est vraiment passé pour moi quand j'ai ajouté un nouveau <asp:Panel> pour ma page et définissez DefaultButton pour un bouton à l'extérieur du panneau (Par erreur). Erreur corrigée quand j'ai changé le DefaultButton à un autre à l'intérieur du panneau.

0
répondu AmiNadimi 2017-02-17 12:04:38

dans mon cas, comme j'avais tellement de problèmes lors de la migration d'un site Web de VS2002 à VS2015, j'ai décidé de créer un nouveau projet sur VS2015 et de transférer tous les formulaires Web de L'ancien projet (VS2002) au nouveau (VS2015).

le nouveau projet avait un Site.Page principale, qui a déjà une étiquette. Parce que je transférais de vieux formulaires Web sans modification, ils avaient déjà une étiquette aussi, donc chaque page essayant de charger avait deux étiquettes à l'intérieur.

Quand j'ai enlevé l'étiquette sur chaque page, ne laissant que celle sur place.Maître page, le problème a été résolu.

j'espère que cela aidera.

0
répondu Rolo 2017-08-25 20:20:52