2012-04-28 26 views
0

My Asp.net 3.5 Visual Studio 2008 Web Appには、長時間の処理(30秒以上)を実行するボタンイベントを含むWebページ(Admin.aspx)があり、UpdatePanel1.Update )ページをリフレッシュすると、無効な操作例外が発生します。UpdatePanel Update()によりInvalidOperationExceptionエラーが発生する

Admin.aspxは、マスターページ

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(部分)これは、デリゲートのイベントによって起動されます。

'System.InvalidOperationException' 種類 の最初のチャンス例外がSystem.Web.Extensionsで発生しました:私はUpdatePanel1.Update()されたら、それは常に私に

エラーを与える

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); 
} 

.dll

答えて

0

どのようにデバッグしているかによってアプリケーションと例外の処理がこの問題を引き起こしている可能性があります。最初の手の例外は常に悪いわけではありませんが、このタイプの例外がスローされたときにVSのデバッガが停止するように設定されている可能性があります。

ファーストハンドの例外は、コード内に何か間違っていることを必ずしも意味するものではなく、例外的な(状況を許してください)状況が発生したことを意味し、アプリ内の例外をどのように処理しているかに応じて正常に終了する場合もあります。私はあなたが例外を処理しておらず、デバッガがプロセスを停止しているという点で、これはあなたのアプリケーションのケースだと思います。

あなたのコードにtry catch statementsの使用を組み込むか、finallyステートメントをキャッチしてみてください。特に、長期間実行される非同期イベントがあるためです。

try catchステートメントを使用せず、これらの第1または第2の変更例外が表示されないようにするには、ツール>>オプション>>デバッグ>>一般に移動してチェックを外してくださいは、イミディエイトウィンドウにページが部分ポストバックの上に再構築されているように例外は、ページのライフサイクルとコントロールを知らないこと、サーバが原因で発生することがあなたのコメントに基づいて

をすべて出力ウィンドウのテキストをリダイレクトします。コードサンプルでは、​​更新パネルでトリガーを使用していないようです。コードで更新を厳密に決定するには、更新パネルで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

てみキャッチは、このメッセージを私に送り..「例外をUpdateメソッドはレンダリングの前にID UpdatePanel1とのUpdatePanel上で呼び出すことができる」...まだ更新されません。 – CraigJSte

+0

@CraigJSteあなたのコメントに基づいて投稿を更新しました。 updatepanel内のコントロールが部分的なポストバックによって作成される前にサーバーによって呼び出されようとしているかのように見えます。 ChildrenAsTriggersをfalseに設定すると、これを修正できます。 – rlcrews

+0

はChildrenTriggers(上記参照)の修正コードの後でもこれをスローします。Admin.aspx PortTrd Res例外Updateメソッドは、Renderの前にUpdatePanel1というIDのUpdatePanelで呼び出すことができます。 – CraigJSte

関連する問題