バージョン 4.6 の WebForms Web サイトと、シンプルなカスタム WebControl があります。次のようなことをすると:
[PersistenceMode(PersistenceMode.InnerProperty)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public SomeControl Contents { get; set; }
public override void RenderControl(HtmlTextWriter writer) {
// Simplified code
Contents.RenderControl(writer);
}
... コントロールを ia ページに 1 回だけ挿入でき、すべて問題ありません。ただし、コントロールを複数回挿入するか、Contents
上記の例のように別のプロパティを追加RenderControl
してから、両方のコントロールをローカル オーバーライド (つまり の本体public override void RenderControl
) で実行すると、例外が発生します。
[InvalidOperationException: Stack empty.] System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource リソース) +52 System.Collections.Generic.Stack`1.Pop() +6856361
Microsoft.VisualStudio.Web.PageInspector.Runtime.WebForms.SelectionMappingRenderTraceListener.EndRendering(TextWriterライター、レンダリングされたオブジェクト オブジェクト) +84
System.Web.UI.RenderTraceListenerList.EndRendering(TextWriter ライター、レンダリングされたオブジェクト オブジェクト) +66
System.Web.UI.Control.RenderControlInternal(HtmlTextWriter ライター、ControlAdapter アダプター) +170
System.Web.UI.Control .RenderControl(HtmlTextWriter ライター、ControlAdapter アダプター) +9796138
System.Web.UI.Control.RenderControl(HtmlTextWriter ライター) +25
System.Web.UI.Page.ProcessRequestMain (ブール値 includeStagesBeforeAsyncPoint、ブール値 includeStagesAfterAsyncPoint) +1303
どうやら、このエラーは Visual Studio Browser Link 機能 (またはその後の機能) が原因であると思われます。無効にすると、エラーはなくなります。
この同じ問題は、この質問のような他のコンテキストで議論されており、こことここでもいくつかの例を指摘し、いくつかの修正が提案されています。ただし、修正はすべて、Browser Link または Page Inspector 機能を完全または部分的に無効にすることに関連しています。
public override void RenderControl
私のコード例のメソッド内のコードを変更し、何かのチェックを導入することで、エラーの発生を防ぐ解決策があるかどうか知りたいですか?