Проблема с HttpContext.Current.User.Identity.Name

В среде, где около 100+ пользователей входят на сайт с формы аутентификации, вызывая HttpContext.Current.User.Identity.Name возвращает правильно вошедшего в систему пользователя.

Однако в 10% случаев возвращается неверная информация о полном имени пользователя. У меня никогда не было такой проблемы на моей тестовой машине, это случается только на производстве. Я не могу воссоздать ту же среду со многими пользователями на моей тестовой машине.

Логика этого приложения:

1) Пользователь вводит имя пользователя и передает, информация просматривается через вызов базы данных SQL, если совпадение, пользователь аутентифицируется через FormsAuthentication.RedirectFromLoginPage (username, false)

 FormsAuthentication.SetAuthCookie(user.SYS_Users_ID.ToString(), false);

 if (Request["ReturnURL"] == null)
    FormsAuthentication.RedirectFromLoginPage(user.SYS_Users_ID.ToString(), false);
 else
     Response.Redirect("/" + SysConfig.ApplicationName + appConfig.DefaultPages.DefaultPage);

2) После перенаправления я помещаю полное имя пользователя в скрытое поле

if (!IsPostBack)
     userFullName.Value = Helper.GetCurrentUserFullName();

...

public static string GetCurrentUserFullName()
{
    string _userFullName = string.Empty; 
    try
    {
        _userFullName = new AgrotMasofim.DAL.Users.Users().GetUserFullName(GetCurrentUserID());
    }
    catch (Exception ex)
    {
        Logs.WriteToFileLog(string.Empty,ex);
    }
    return _userFullName;
 }



public static Decimal GetCurrentUserID()
        {
            Decimal _userID = 0;

            if (HttpContext.Current.User != null)
            {
                try
                {
                    _userID = Convert.ToDecimal(HttpContext.Current.User.Identity.Name);
                }
                catch (Exception ex)
                {
                   Logs.WriteToFileLog(string.Empty, ex);
                }
            }
            return _userID;
        }

3) На всех страницах, посещаемых пользователем, его / ее информация отображается внутри метки, которая находится на главной странице

  lblUserName.Text = HttpUtility.HtmlDecode("Hello " + userFullName.Value);

Это работает почти всегда. Любые идеи, почему он может не работать время от времени?

6
задан Katya 26 February 2012 в 15:02
поделиться