2012-04-28 2 views
0

My Asp.net 3.5 Веб-приложение Visual Studio 2008 имеет веб-страницу (Admin.aspx) с событием кнопки, выполняющим длительный процесс (30 секунд +), затем запускает UpdatePanel1.Update (), чтобы обновить страницу .. вызывая исключение Invalid Operation.UpdatePanel Update() вызывает ошибку InvalidOperationException

Admin.aspx имеет MasterPage

Admin.aspx (частично) здесь:

<div id="Tabs"> 
    <div class="cen2"> 
     <asp:ScriptManager ID="ScriptManager1" AsyncPostBackTimeOut="360000" runat="server"> 
     </asp:ScriptManager> 
     <asp:UpdatePanel ID="UpdatePanel1" ChildrenAsTriggers="False" runat="server" 
      UpdateMode="Conditional" > 
      <ContentTemplate> 

      cont....... > 

Admin.aspx.cs здесь (частичные) Это срабатывает по событию делегата.

private void port_trdRes(object sender, DataTable dt) 
{ 

    dlResSum.DataSource = dt; 
    dlResSum.DataBind(); 
    try 
    { 
     UpdatePanel1.Update(); 
    } 
    catch (Exception webex) 
    { 
     SendErr("Admin.aspx PortTrd Res Exception " + webex.Message.ToString()); 
    } 
    simtrd.port.trdRes -= new Steury.Trading.TrdSummDelegate(port_trdRes); 
} 

Когда я получаю UpdatePanel1.Update() это всегда дает мне

Ошибка:

Первый шанс исключение типа 'System.InvalidOperationException' произошло в System.Web.Extensions .dll

ответ

0

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

Исключения из первых рук не обязательно означают, что что-то не так в вашем коде, но что исключительная ситуация (pardon the pun) возникла и в зависимости от того, как вы обрабатываете исключения в своем приложении, она может или не может закончиться изящно. Я думаю, что в вашем приложении это так, что вы не обрабатываете исключения, а отладчик останавливает процесс.

Вы должны попытаться включить в свой код использование try catch statements или попытаться вывести окончательные утверждения. Тем более, что у вас есть асинхронные события, которые работают в течение длительного времени.

Если вы не хотите использовать заявления об уловах попробовать, и вы просто хотите, чтобы подавить эти первые или вторые исключения изменения от появления вы можете сделать это, перейдя в Tools >> Options >> Debugging >> Генеральный и снимите флажок Перенаправление всего окна вывода текста в окно Immediate

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

<asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="false" UpdateMode="Conditional"> 

Here is a more in-depth explanation of how this property works

+0

Try Поймайте посылает мне это сообщение .. 'Exception метод Update может быть вызвана только на UpdatePanel с ID UpdatePanel1 перед визуализацией' ... но до сих пор не обновляется. – CraigJSte

+0

@CraigJSte Обновлено сообщение, основанное на вашем комментарии. Похоже, что элемент управления внутри панели обновлений пытается вызвать сервер до того, как он был создан путем частичной обратной передачи. Установка параметра ChildrenAsTriggers в false может исправить это. – rlcrews

+0

по-прежнему выбрасывает это после внесенного в него поправку для ChildTriggers (см. Выше) ..... Admin.aspx PortTrd Res Exception. Метод Update может быть вызван только UpdatePanel с ID UpdatePanel1 перед Render. – CraigJSte

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