Это может показаться ошибкой в CLR - вы должны сообщить об этом в Microsoft.
Обратите внимание, что StackOverflowException
происходит , когда CLR пытается выполнить Crash
, а не во время выполнения метода Crash
- программа фактически никогда не входит метод. Это может указывать на то, что это какой-то сбой низкого уровня в CLR. (Также обратите внимание, что выброшенное исключение также не имеет трассировки стека).
Это исключение невероятно специфично для этой ситуации - изменение любого из множества факторов исправляет это, например, следующий код работает нормально:
private static void Crash()
{
bool testCrash2 = testCrash;
try { }
finally
{
HttpRuntime.Cache.Insert("xxx", testCrash2);
}
}
Я бы порекомендовал вам сообщить об этом в Microsoft, но попытаться обойти эту проблему, скорректировав свой код тем временем.