По какой-то причине один из моих методов Html.Action () выдает исключение StackOverflowException, которое только перехватывается когда я отлаживаю экземпляр веб-сервера после того, как он зависает и перестает отвечать. Все, что я получаю, это:
System.StackOverflowException было unhandled
Невозможно оценить выражение, поскольку текущий поток находится в переполнении стека состояние.
Строка, вызывающая исключение, следующая:
Это происходит, когда я войдите в систему, а затем получите перенаправление на домашнюю страницу (чего никогда не происходит, потому что она застревает.
Вот как я проверяю, вошел ли пользователь в систему или нет, чтобы визуализировать представление автоматически:
<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 () методы одновременно?