0

私のAsp.net3.5Visual Studio 2008 Webアプリには、長いプロセス(30秒以上)を実行するボタンイベントを含むWebページ(Admin.aspx)があり、UpdatePanel1.Update()をトリガーしてページを更新します。操作例外。

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 here(partial)これはデリゲートイベントによって発生します。

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.Web.Extensions.dllでタイプ「System.InvalidOperationException」の最初のチャンスの例外が発生しました

4

1 に答える 1

0

アプリケーションのデバッグ方法と例外の処理方法によっては、この問題が発生する可能性があります。直接の例外は必ずしも悪いわけではありません。このタイプの例外がスローされたときにVSのデバッガーが停止するように設定されている可能性があります。

直接の例外は、必ずしもコードに問題があることを意味するわけではありませんが、例外的な(しゃれを許す)状況が発生したことを意味します。アプリ内で例外を処理する方法によっては、正常に終了する場合と終了しない場合があります。これは、例外を処理しておらず、デバッガーがプロセスを停止しているという点で、アプリの場合だと思います。

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

try catchステートメントを使用せず、これらの1番目または2番目の変更例外の表示を抑制したい場合は、[ツール]>>[オプション]>>[デバッグ]>>[一般]に移動し、[すべての出力ウィンドウのテキストをリダイレクトする]チェックボックスをオフにします。即時ウィンドウ

あなたのコメントに基づいて、例外はページのライフサイクルと、ページが部分的なポストバックで再構築されているときにサーバーがコントロールを認識していないことが原因である可能性があります。コードサンプルでは、​​更新パネルでトリガーを使用していないようです。コードで更新を厳密に決定する場合は、更新パネルのChildrenAsTriggersのプロパティをfalseに変更します。

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

このプロパティがどのように機能するかについて、より詳細に説明します。

于 2012-04-28T13:07:25.040 に答える