В среде, где около 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);
Это работает почти всегда. Любые идеи, почему он может не работать время от времени?