Html.Action () вызывает исключение StackOverflowException

По какой-то причине один из моих методов Html.Action () выдает исключение StackOverflowException, которое только перехватывается когда я отлаживаю экземпляр веб-сервера после того, как он зависает и перестает отвечать. Все, что я получаю, это:

System.StackOverflowException было unhandled

Невозможно оценить выражение, поскольку текущий поток находится в переполнении стека состояние.

Строка, вызывающая исключение, следующая:

@ Html.Action ("Summary", "User")

Это происходит, когда я войдите в систему, а затем получите перенаправление на домашнюю страницу (чего никогда не происходит, потому что она застревает.

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

<div id="userPanel">
                @if (!SessionManager.CheckSession(SessionKeys.User))
                {
                    <div id="loginForm">@Html.Action("Login", "User")</div>
                    <div id="registerForm">@Html.Action("Register", "User")</div>
                    <hr class="greyLine" />

                    <div id="recentlyViewedItems">
                        <div id="recentItemsTitle">
                            <span class="recentItemsIcon"></span><span class="theRecentTitle">Recently Viewed</span>
                        </div>
                    </div>
                }
                else
                {
                    <div id="userInfoSummary">@Html.Action("Summary", "User")</div>
                } 
            </div>

А вот мои ActionMethods:

    [HttpPost]
    public ActionResult Login(LoginViewModel dto)
    {
        bool flag = false;
        if (ModelState.IsValid)
        {
            if (_userService.AuthenticateUser(dto.Email, dto.Password, false)) {
                var user = _userService.GetUserByEmail(dto.Email);
                var uSession = new UserSession
                {
                    ID = user.Id,
                    Nickname = user.Nickname
                };
                SessionManager.RegisterSession(SessionKeys.User, uSession);
                flag = true;
            }
        }
        if (flag)
            return RedirectToAction("Index", "Home");
        else
        {
            ViewData.Add("InvalidLogin", "The login info you provided were incorrect.");
            return View(dto);
        }
    }

    public ActionResult Summary()
    {

        var user = _helper.GetUserFromSession();
        var viewModel = Mapper.Map<User, UserInfoSummaryViewModel>(user);
        return View(viewModel);
    }

] Как я могу получить больше информации об этом исключении? И почему это происходит в первую очередь? Я не думаю, что есть какие-то бесконечные рекурсивные функции или какой-то бесконечный цикл ... Может быть, я вызываю несколько Html.Action () методы одновременно?

12
задан Kassem 10 April 2011 в 17:03
поделиться