Переполнение стека происходит при доступе к контроллеру

alanofranco спросил: 10 мая 2018 в 04:00 в: c#
public ActionResult Index()
{
    var users = db.Users.Include(u => u.Users1).Include(u => u.User1);
    return View(users.ToList());
}

Создан проект MVC / Entity в Visual Studio, DB. Созданы два контроллера, один из которых называется Users, другие - Tasks. Просмотр страниц для задач отлично работает, но всякий раз, когда я пытаюсь получить доступ к страницам просмотра пользователя, я испытываю это переполнение стека.

Значения приложений Телеметрия (не настроенная): {"name":"Microsoft.ApplicationInsights .Dev.Request","время":"2018-06-03T17: 26: 09.6757730Z","метки": {"ai.cloud.roleInstance":"DESKTOP-2V3VGT6","ai.operation.id": msgstr"""." -195" ,"ai.internal.nodeName":"РАБОЧАЯ-2V3VGT6"},"данные": {"BaseType":"RequestData","baseData": {"веры": 2,"идентификатор":"| Lh /a0kZkKsE=.82dfa1d2_","name":"GET Tasks / Index"," duration":" 00: 00: 04.4166410"," success": true," responseCode":" 200"," url":" http :// localhost: 62166 / Tasks"," properties": {" DeveloperMode":" true"," _MS.ProcessedByMetricExtractors":" (Name: 'Requests', Ver: '1.0')"}}}} Необработанный исключение типа "System.StackOverflowException" произошло в mscorlib.dll

The program '[7192] iisexpress.exe' has exited with code -2147023895 (0x800703e9).

Полная трассировка по адресу: https://pastebin.com/raw/846WTUqE


1 ответ

Zander ответил: 10 мая 2018 в 05:21

Сначала удалите второй оператор include и посмотрите, что это за ошибка. Если это не работает, вы можете попробовать выражение Select Where, подобное этому. Добавьте ToList () к переменной, а не к возврату. Перемещение ToList () не делает другого, но облегчает отладку.

public ActionResult Index()
    {
        var users = db.Users.Select().Where(u => u.Users1).ToList();
        return View(users);
    }
juharr ответил: 11 мая 2018 в 09:44
Это не будет даже компилироваться, поскольку нет перегрузки для Select, который не принимает аргументов, и если Users1 не является bool, то функция лямбда не будет соответствовать Func<T, bool>, который требуется Where.

Дополнительное видео по вопросу: Переполнение стека происходит при доступе к контроллеру

Hackerdom-12-03 Переполнение стека

Buffer Overflow атака и как с ней бороться

Лекция 7. Эксплуатация уязвимостей на переполнение буфера в куче