web-dev-qa-db-ja.com

エラー:コードが最適化されているため、式を評価できません

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を使用しており、私のアプリケーションもマスターページを使用しています。

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

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

12
DNR

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

これを試してください:

using System.Threading.ThreadAbortException;

catch(ThreadAbortException ex)
{
    throw;
}
13
Troy

あなたが説明する問題は、ここに示すように仕様によるようです:

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

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

10
AvengingBudda

_server.transfer_をresponse.redirect()に置き換えてみましたか?

Server.Transfer VS Response.Redirect

2
christiandev

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

これの理由は、テストのメインスレッドが終了し、オブジェクトのクリーニングを初期化している間に、無限に実行することを目的とした他の作成されたスレッドがまだ機能していたためです。

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

2
jit4peace