2012-04-16 4 views
0

Так что я недавно получал это httpexeption при попытке просмотреть сайт, над которым я работал через iis7. Ошибка ниже:Как правильно обрабатывать/отлаживать HttpExceptions?

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Web.HttpException: The Controls collection cannot be modified because the control contains code blocks (i.e. <% ... %>).

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:

[HttpException (0x80004005): The Controls collection cannot be modified because the control contains code blocks (i.e. <% ... %>).]
System.Web.UI.ControlCollection.AddAt(Int32 index, Control child) +8689794 Telerik.Web.UI.RadAjaxControl.MoveUpdatePanel(Control initiator, Control updated) +132

[HttpException (0x80004005): Please, see whether wrapping the code block, generating the exception, within RadCodeBlock resolves the error.] Telerik.Web.UI.RadAjaxControl.MoveUpdatePanel(Control initiator, Control updated) +180
Telerik.Web.UI.RadAjaxControl.PerformRender() +375
Telerik.Web.UI.RadAjaxControl.OnPageRender(HtmlTextWriter writer, Control page) +1222
Telerik.Web.UI.RadAjaxControl.RenderPageInAjaxMode(HtmlTextWriter writer, Control page) +95
System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +256
System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +19
System.Web.UI.Page.Render(HtmlTextWriter writer) +29
System.Web.UI.Adapters.ControlAdapter.Render(HtmlTextWriter writer) +21 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +8703529
System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +99
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean 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> 

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

Любая помощь или предложения приветствуются. Спасибо.

ответ

0

Похоже, по ошибке, что код, расположенный где-то где-то, хочет динамически добавлять элементы управления на страницу, а элементы управления, которые добавляются, имеют на них динамический контент. Я бы искал код, который делает что-то вроде

Controls.Add(

И посмотрите, не комментирует ли эта линия трюк. Это может быть ошибкой в ​​программном обеспечении Telerik, поэтому вы можете попробовать опубликовать на своих форумах или отправить их по электронной почте, чтобы узнать, появилась ли эта проблема.

Смежные вопросы