web-dev-qa-db-ja.com

System.InvalidOperationException:空のスタック

Visual Studio 2013で構築されたASP.NET 4.xアプリケーションを実行すると、次の例外が発生します。

ページインスペクターアセンブリを削除して、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)

例外を回避する方法はありますか?提案をありがとう

24
mybrave

理由はいくつかあります

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>

ドロップダウンリストで選択したアイテムが重複していて、問題が発生していることに気付きました。

8
fcm

VS 2013でブラウザーリンクを無効にし、エラーの実際の原因を確認できました。通常、ブラウザのリンクが設定されているとき、それは根本的なものです。ここで無効にする方法を見ることができます: http://www.poconosystems.com/software-development/how-to-disable-browser-link-in-visual-studio-2013/

25
Jason

これは、ラベルのAssociatedControlIDが見つからないコントロールに関連付けられている場合に発生する可能性があります。

23
Sam Jones

これが誰かを助けることを願っています。

私のasp:panelにはデフォルトのボタン[〜#〜] xyz [〜#〜]があり、名前を変更しました[〜#〜] xyz [〜#〜]パネルのデフォルトのボタン名を変更します。

6
Halim

問題が見つかりました。 GridViewでコントロールのIDを生成する方法がデフォルトから変更されました。

ClientIDMode="Predictable" ClientIDRowSuffix="ID"

その結果、例外が発生しました。実際の例外がPageInspectorスタックの空によって隠された理由がわかりません。変更を元に戻すだけで問題は解決しました。

例外は異なります(ただし、GridView設定が元に戻ると、このdisapperも)

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

「ブラウザリンク」が有効になっているVisual Studio 2013を使用して、開発マシンで実行されている一部のWebアプリでもこの問題が発生しました。

私が見た複数のケースでは、ブラウザリンクを有効にすると、クライアントスクリプトとセキュリティ警告の両方のあらゆる種類の問題、およびこのようなサーバー例外が発生します(厄介なことは、デフォルトで有効になっているようです、Msftのおかげです!)

3

私は同じ例外を持っていましたが、私の場合、問題は次の行方不明でした:

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

私の場合(ASP.NET 4.6、Visual Studio 2015)、aspテキストコントロールにコメントし、新しいaspドロップダウンリストを追加しましたが、関連付けられたラベルのAssociatedControlIDは更新しませんでした。

associatedControlIDを新しく追加されたASPドロップダウンリストIDに変更すると、問題が修正されました。

2
Satbir

VisualStudio 2012ソリューションファイルからVisualStudio 2015(vs2015)を開始しましたが、すべてのプロジェクトのビルド中にはビルドしませんでした。これは、デフォルトで有効になっている[ブラウザリンクを有効にする]オプションが原因でした。 [ブラウザリンクを有効にする]オプションを無効にし、すべてのプロジェクトを正常に構築したソリューションを再構築しました。この後、ブラウザーでURLを起動し、Boomが機能しました!私のような同様のシナリオを持っている人のために。やってみて !

0
SitecoreSyed

私の場合、WebサイトをVS2002からVS2015に移行する際に多くの問題があったため、VS2015で新しいプロジェクトを作成し、すべてのWebフォームを古いプロジェクト(VS2002)から新しいプロジェクト(VS2015)に転送することにしました。

新しいプロジェクトにはSite.Masterページがあり、既にタグがあります。変更せずに古いWebフォームを転送していたため、既にタグも含まれていたため、ロードしようとしている各ページには2つのタグがありました。

各ページのタグを削除し、Site.Masterページに1つだけ残した場合、問題は解決しました。

これがお役に立てば幸いです。

0
Rolo

新しい<asp:Panel>をページに追加し、DefaultButtonをパネルの外のボタンに設定したときに、それは私に起こります(誤って)。パネル内でDefaultButtonを別のものに変更するとエラーが修正されました。

0
AmiNadimi