Подтвердить что ты не робот

Ошибка: невозможно оценить выражение, потому что код оптимизирован

Я получаю сообщение об ошибке в моем приложении 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 вызывает вызывающую страницу ближе к концу.

4b9b3361

Ответ 1

Вы получите сообщение об ошибке, но блок кода ниже заманит его, и вы сможете продолжить свою жизнь.

Попробуйте следующее:

using System.Threading.ThreadAbortException;

catch(ThreadAbortException ex)
{
    throw;
}

Ответ 2

Проблема, которую вы описываете, выглядит по дизайну, как показано здесь:

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

Использование Server.Execute должно решить проблему

Ответ 4

Я столкнулся с этим сообщением, когда тестировал работу многопоточного приложения с помощью MS-Test.

Я нашел причину этого в том, что основной поток тестирования закончился и инициализировал очистку объектов, в то время как другие созданные потоки, которые предназначены для бесконечного запуска, все еще работали.

Как метод очистки сосков убивает объекты, эти потоки прерываются, показывая выше сообщение.