12

asp.netアプリで次のようなエラーが発生します

「コードが最適化されているか、ネイティブフレームが呼び出しスタックの最上位にあるため、式を評価できません。」

protected void btnCustomerProfile_Click(object sender, EventArgs e)
{
    try
    {
        Server.Transfer("CustomerProfile.aspx");
    }
    catch (Exception ex)
    {
        Response.Write(ex.ToString());
    }
    finally
    { }
}

SOを検索した後、同様の投稿のほとんどにresponse.redirectが含まれていることがわかりました。私のコードはserver.transferを使用しており、アプリケーションもマスターページを使用しています。

この問題を解決するにはどうすればよいですか?

更新:何らかの理由で、このエラーが発生するのは、Response.Redirectも使用しているためです。残念ながら、Server.Executeは呼び出しページを最後に呼び出すため、Server.Executeを使用できません。

4

4 に答える 4

13

エラーが発生しますが、以下のコードブロックがエラーをトラップし、人生を続けることができます。

これを試して:

using System.Threading.ThreadAbortException;

catch(ThreadAbortException ex)
{
    throw;
}
于 2012-06-21T01:46:16.793 に答える
10

あなたが説明する問題は、ここに示されているように設計によるもののようです。

http://support.microsoft.com/kb/312629/EN-US/

使用Server.Executeすると問題が解決するはずです

于 2012-06-11T15:32:06.043 に答える
2

に置き換えてみましたserver.transferresponse.redirect()

Server.Transfer VS Response.Redirect

于 2012-06-11T15:38:30.460 に答える
2

MS-Testを使用してマルチスレッドアプリケーションの動作をテストしているときに、このメッセージに直面しました。

これは、メインスレッドのテストが終了し、オブジェクトのクリーニングが初期化されたときに、無限に実行されることを意図した他の作成されたスレッドがまだ機能していることが原因であることがわかりました。

乳頭クリーンアップメソッドがオブジェクトを強制終了すると、これらのスレッドは中止され、上記のメッセージが表示されます。

于 2014-12-18T10:49:17.377 に答える