Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

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>

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

Ответ 3

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

Ответ 4

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

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

Ответ 5

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

ClientIDMode="Predictable" ClientIDRowSuffix="ID"

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

Теперь исключение отличается (но как только настройки GridView снова возвращаются к оригиналу, этот депапер)

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

Ответ 6

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

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

Ответ 7

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

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

Ответ 8

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

при изменении AssociatedControlID на недавно добавленный идентификатор выпадающего списка asp моя проблема была исправлена.

Ответ 9

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

Ответ 10

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

Ответ 11

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

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

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

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