0

誰かが 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 からの正常なログイン「デモ」

2012-08-22 10:51:39.9741 INFO IP 10.0.0.21 からの正常なログイン「デモ」

ログインの失敗または例外を示す警告ログ エントリがログ ファイルに存在しません。

これは、Web サーバーがしばらくアイドル状態になっていると、より頻繁に発生するようです。

問題を診断/解決するにはどうすればよいですか?

4

0 に答える 0