Ответ 1
Вы получите сообщение об ошибке, но блок кода ниже заманит его, и вы сможете продолжить свою жизнь.
Попробуйте следующее:
using System.Threading.ThreadAbortException;
catch(ThreadAbortException ex)
{
throw;
}
Я получаю сообщение об ошибке в моем приложении 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 вызывает вызывающую страницу ближе к концу.
Вы получите сообщение об ошибке, но блок кода ниже заманит его, и вы сможете продолжить свою жизнь.
Попробуйте следующее:
using System.Threading.ThreadAbortException;
catch(ThreadAbortException ex)
{
throw;
}
Проблема, которую вы описываете, выглядит по дизайну, как показано здесь:
http://support.microsoft.com/kb/312629/EN-US/
Использование Server.Execute
должно решить проблему
Вы пытались заменить server.transfer
на response.redirect()
?
Я столкнулся с этим сообщением, когда тестировал работу многопоточного приложения с помощью MS-Test.
Я нашел причину этого в том, что основной поток тестирования закончился и инициализировал очистку объектов, в то время как другие созданные потоки, которые предназначены для бесконечного запуска, все еще работали.
Как метод очистки сосков убивает объекты, эти потоки прерываются, показывая выше сообщение.