MVC 4成功登录有时会返回登录屏幕

时间:2012-08-22 19:21:33

标签: asp.net-mvc asp.net-mvc-4

每隔一段时间,当有人登录我的ASP.Net MVC 4应用程序时,它们就会返回登录屏幕。重新输入凭据始终允许成功登录。记录确认两次尝试都输入了正确的凭据。

登录代码如下所示

[AllowAnonymous]
[HttpPost]
public ActionResult Login(LogOnModel model, string returnUrl)
{
    try
    {
        MyData md = (MyData)Session["MyData"]; // Should be null, but testing that it is after logging out and back in

        if (ModelState.IsValid)
        {
            if (Membership.ValidateUser(model.UserName, model.Password))
            {
                logger.Info("Successful login '" + model.UserName + "' from IP " + Request.IPAddresses());
                FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
                if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
                    && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
                {
                    return Redirect(returnUrl);
                }
                else
                {
                    return RedirectToAction("Index", "Home");
                }
            }
            else
            {
                logger.Warn("Login failed '" + model.UserName + "' from IP " + Request.IPAddresses());
                ModelState.AddModelError("", "The user name or password provided is incorrect.");
            }
        }
        else
        {
            logger.Warn("Login failed (model state invalid) '" + model.UserName + "' from IP " + Request.IPAddresses());
            ModelState.AddModelError("", "The user name or password provided is incorrect.");
        }

        // If we got this far, something failed, redisplay form.
        logger.Warn("Something failed during login.  Redisplaying login form.");
    }
    catch (Exception ex)
    {
        logger.Warn("Exception during logon process: " + ex.Message);
    }

    return View(model);
}

变量 logger 是默认的NLog类记录器。

在隔离环境中重现问题后,日志文件看起来像

  

2012-08-22 10:51:25.4581 INFO从IP 10.0.0.21成功登录'demo'

     

2012-08-22 10:51:39.9741 INFO从IP 10.0.0.21成功登录'demo'

日志文件中不会出现任何表示登录失败或异常的警告日志条目。

当Web服务器空闲一段时间后,这似乎发生的频率更高。

如何诊断/解决问题?

0 个答案:

没有答案
相关问题