0

そのため、最近、iis7 で作業しているサイトを表示しようとすると、この httpexeption が表示されます。エラーは以下のとおりです。

説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。

例外の詳細: System.Web.HttpException: コントロールにコード ブロック (つまり <% ... %>) が含まれているため、Controls コレクションを変更できません。

ソース エラー:

現在の Web 要求の実行中に未処理の例外が生成されました。例外の発生元と場所に関する情報は、以下の例外スタック トレースを使用して特定できます。

スタックトレース:

[HttpException (0x80004005): コントロールにコード ブロック (つまり <% ... %>) が含まれているため、コントロール コレクションを変更できません。]
System.Web.UI.ControlCollection.AddAt(Int32 インデックス、コントロールの子) +8689794 Telerik. Web.UI.RadAjaxControl.MoveUpdatePanel(コントロール イニシエータ、コントロール更新) +132

[HttpException (0x80004005): RadCodeBlock 内でコード ブロックをラップし、例外を生成することでエラーが解決するかどうかを確認してください。
] RadAjaxControl.PerformRender() +375
Telerik.Web.UI.RadAjaxControl.OnPageRender(HtmlTextWriter ライター、コントロール ページ) +1222
Telerik.Web.UI.RadAjaxControl.RenderPageInAjaxMode(HtmlTextWriter ライター、コントロール ページ) +95
System.Web.UI.Control .RenderChildrenInternal(HtmlTextWriter ライター、ICollection の子) +256
System.Web.UI.Control.RenderChildren(HtmlTextWriter ライター) +19
System.Web.UI.Page.Render(HtmlTextWriter ライター) +29
System.Web.UI.Adapters.ControlAdapter.Render(HtmlTextWriter ライター) +21 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter ライター、ControlAdapter アダプター) +8703529
System.Web.UI.Control.RenderControl(HtmlTextWriter ライター、ControlAdapter アダプター) ) +99
System.Web.UI.Control.RenderControl(HtmlTextWriter ライター) +25
System.Web.UI.Page.ProcessRequestMain(ブール値 includeStagesBeforeAsyncPoint、ブール値 includeStagesAfterAsyncPoint) +1266

この問題について調査を行ったとき、私が見つけたと思われる唯一の実行可能な解決策は、javascript を radcodeblock 内にラップするか、<span runat="server">. これらの方法の両方を試しましたが、どちらもうまくいかないようです。また、このサイトの以前の開発者によって実装された javascript には、使用しているとわかる限りアイテムが含まれていないため、このエラーが発生する理由について少し混乱しています<%...%>

さらに、ページ内のすべてのコントロールをチェックして、問題のある上記の状態が実際に発生していないことを確認しました。言い換えれば、私が知る限り<%...%>、ページの宣言以外に使用されているコードには場所がありません。すなわち:

 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="LoginPage.aspx.cs" Inherits="Datamart.UI.Reporting.Web.LoginPage" culture="auto" meta:resourcekey="PageResource1" uiculture="auto" ValidateRequest="False" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>

それで、私が間違っている可能性があるのは何なのか、または私の問題がどこにあり、何が正確に何であるかを見つけるための次のステップは何だろうと思っていました. エラーが発生していると思われる場所は以下のとおりです。

<telerik:RadScriptBlock ID="RadScriptBlock1" runat="server">  
            <script type="text/javascript">
            function onTabSelecting(sender, args) 
            {
                if ( args.get_tab().get_pageView()) 
                {
                    if (args.get_tab().get_pageView().get_id()) 
                    {
                        args.get_tab().set_postBack( false );
                    }
                }
            }
            function StopPropagation(e) 
            {
                //cancel bubbling 
                e.cancelBubble = true;
                if (e.stopPropagation)
                    e.stopPropagation();
            }

            //the following code use radconfirm to mimic the blocking of the execution thread.
            //The approach has the following limitations:
            //1. It works inly for elements that have *click* method, e.g. links and buttons
            //2. It cannot be used in if(!confirm) checks
            window.blockConfirm = function(text, mozEvent, oWidth, oHeight, callerObj1, oTitle) 
            {
                var ev = mozEvent ? mozEvent : window.event; //Moz support requires passing the event argument manually 
                //Cancel the event 
                ev.cancelBubble = true;
                ev.returnValue = false;
                if (ev.stopPropagation) 
                    ev.stopPropagation();
                if (ev.preventDefault) 
                    ev.preventDefault();

                //Determine who is the caller 
                var callerObj = ev.srcElement ? ev.srcElement : ev.target;

                //Call the original radconfirm and pass it all necessary parameters
                if (callerObj) 
                {
                    //Show the confirm, then when it is closing, if returned value was true, automatically call the caller's click method again.
                    var callBackFn = function(arg) 
                    {
                        if (arg) 
                        {
                            callerObj["onclick"] = "";
                            if (callerObj.click) callerObj.click(); //Works fine every time in IE, but does not work for links in Moz 
                            else if (callerObj.tagName == "A") //We assume it is a link button! 
                            {
                                try 
                                {
                                    eval(callerObj.href)
                                }
                                catch (e) { }
                            }
                        }
                    }

                    radconfirm(text, callBackFn, oWidth, oHeight, callerObj, oTitle);
                }
                return false;
            }
            function noBack() 
            {
                window.history.forward(); 
            }
            noBack();
            window.onload = noBack;
            window.onpageshow = function(evt) 
            {
                if (evt.persisted) noBack(); 
            }
            window.onunload = function() 
            {
                void (0);
            }
            </script>          
        </telerik:RadScriptBlock>

これは私のページの本文にありますが、ヘッダーだけでなくページの下部にも移動しようとしましたが、それは他の人にとって可能な解決策であることが判明しましたが、役に立ちませんでした.

どんな助けや提案も大歓迎です。ありがとうございました。

4

1 に答える 1

0

エラーにより、どこかの背後にあるコードがページにコントロールを動的に追加しようとしていて、追加されているコントロールに動的コンテンツが含まれているように見えます。私は次のようなことをするコードを検索します

Controls.Add(

そして、その行をコメントアウトすることでうまくいくかどうかを確認してください。これはTelerikのソフトウェアのバグである可能性もあるため、フォーラムに投稿するか、サポートに電子メールを送信して、この問題がすでに発生しているかどうかを確認してください。

于 2012-04-17T18:33:32.687 に答える