Система.InvalidOperationException: пустой стек

раз бежать ASP.NET 4.x приложение, построенное в Visual Studio 2013, я получаю приведенное ниже исключение.

Я попытался отключить PageInspector, удалив сборку инспектора страниц

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

и добавление этой конфигурации в Настройки Приложения

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

ничего не помогло.

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

есть ли способ избежать исключения? Большое спасибо за любые предложения

11 ответов


существует несколько причин, почему

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

после добавления как предложил:

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

Я заметил, что у меня был дубликат выбранного элемента в раскрывающемся списке, создающем проблему.


Я отключил ссылку браузера в VS 2013 и смог увидеть фактическую причину ошибки. Обычно это что-то основное, когда установлена ссылка браузера. Вы можете увидеть, как отключить его здесь: http://www.poconosystems.com/software-development/how-to-disable-browser-link-in-visual-studio-2013/


Это может произойти, если AssociatedControlID на этикетке, связанный с элементом управления, который не может быть найден.


надеюсь, что это поможет кому-то.

Я получаю эту ошибку, когда мой asp:panel имеет кнопку по умолчанию say XYZ и я изменил имя XYZ и забыл изменить название кнопки по умолчанию в панели.


Я нашел проблему. Был изменен способ генерации идентификаторов элементов управления в GridView по умолчанию на

ClientIDMode="Predictable" ClientIDRowSuffix="ID"

что привело к исключению. Не уверен, почему реальное исключение было скрыто пустым стеком PageInspector. Просто возврат изменения к оригиналу решил проблему.

теперь исключение отличается (но как только настройки GridView возвращаются к исходному этому disapper тоже)

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

Я также видел эту проблему в некоторых веб-приложениях, запущенных на компьютерах разработчиков с помощью Visual Studio 2013 с включенной "ссылкой браузера".

в нескольких случаях, которые я видел, оставляя ссылку браузера включена вызывает всевозможные проблемы, как клиентский скрипт и предупреждения безопасности, и исключения сервера, как этот (раздражает то, что он, кажется, включен по умолчанию, спасибо Msft!)


У меня было такое же исключение, но в моем случае проблема заключалась в следующем:

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

в моем случае (ASP.NET 4.6, Visual Studio 2015) Я прокомментировал текстовый элемент управления asp и добавил новый раскрывающийся список asp, но не обновил AssociatedControlID связанной метки.

при изменении AssociatedControlID на недавно добавленный ASP выпадающий список ID моя проблема была исправлена.


мы начали VisualStudio 2015 (vs2015)из файла решения VisualStudio 2012 и при создании всех проектов не строили. Это было связано с включенной по умолчанию опцией Enable Browser Link. Я отключил опцию включить ссылку браузера и заново построил решение, которое успешно построило все проекты. После этого я запустил url в браузере и бум он работал! Для тех, у кого похожий сценарий, как у меня. дайте ему шанс !


Это случилось со мной, когда я добавил новый <asp:Panel> на мою страницу и выберите DefaultButton к кнопке вне панели (по ошибке). Исправлена ошибка при изменении DefaultButton к другому внутри панели.


в моем случае, поскольку у меня было так много проблем с миграцией веб-сайта с VS2002 на VS2015, я решил создать новый проект на VS2015 и перенести все веб-формы из старого проекта (VS2002) в новый (VS2015).

новый проект сайта.Главная страница, на которой уже есть тег. Поскольку я передавал старые webforms без изменений, у них уже был тег, поэтому каждая страница, пытающаяся загрузить, имела два тега внутри.

когда я удалил тег на каждая страница, оставляя только одну на сайте.Главная страница, проблема решена.

надеюсь, это поможет.