2013-02-11 2 views
-2

Может кто-нибудь помочь мне отладить эту проблему:Исключение Stackoverflow в System.Core.dll

Я работаю над MVC webapp. У меня есть динамическая система маршрутизации, которая хранит маршруты в базе данных как friendlyUrls. Вся моя дружеская логика url работает отлично уже несколько месяцев, так что это может не иметь ничего общего с ошибкой.

Сегодня утром я неожиданно начал получать Stackoverflow Исключения в библиотеке System.Core.dll, когда я перехожу к определенному URL-адресу, а именно ~/Login. Этот маршрут mvc указывает на действие контроллера (AccountController.Login()). Действие приписывается пользовательским actionfilter, но ни фильтр действия, ни код действия никогда не попадают.

Последний код, который я могу остановить с использованием точки останова, - это метод global.asaxFormsAuthentication_OnAuthenticate. Этот метод работает отлично и устанавливает роли пользователя (который в этот момент отсутствует, потому что он еще не вошел в систему). Затем он выходит из этого метода и сразу же выдает исключение Stackoverflow.

Я не могу найти какие-либо другие затронутые страницы, но не могу проверить их пропуски, потому что я не могу войти в страницы администрирования (где проблема также может существовать).

Может ли кто-нибудь сказать мне, как получить дополнительную информацию о том, что вызывает эту проблему?

+1

Можете ли вы получить трассировку стека? – svick

+0

Чтобы эффективно ответить на этот вопрос, нам нужна трассировка стека; очень маловероятно, что в System.Core.dll есть ошибка, поэтому, скорее всего, это ваш код. Мы не можем сказать вам, в чем проблема, если вы не можете включить Stack Trace и 1) небольшую программу, которая воспроизводит эту проблему, или 2) код, который вызывает трассировка стека. –

+1

Это была одна из проблем в ее отладке, среда отладки визуальной студии не имеет трассировки стека, так как стек переполнен (пролегает?) :) - Но я только что понял, в чем проблема: моя собственная глупость. Я использую инъекцию зависимостей для инъекции услуги, которая сама вызывала исходную услугу, поэтому она перешла в бесконечный цикл решения одной и той же двух зависимостей! Было бы неплохо, если бы Unity могла распознать такую ​​проблему и дать немного больше подробностей. Это было 4 часа, я никогда не вернусь. – hofnarwillie

ответ

-1

Найденный! Я использую инъекцию зависимостей для инъекции услуги, которая сама вызывала исходную услугу, поэтому она перешла в бесконечный цикл решения одной и той же двух зависимостей! Было бы неплохо, если бы Unity могла распознать такую ​​проблему и дать немного больше подробностей.

Смежные вопросы