В среде, где около 100+ пользователей входят на сайт с аутентификацией по формам, вызов HttpContext.Current.User.Identity.Name возвращает корректно зарегистрированного пользователя.
Однако 10%время неправильный пользователь Полное имя информация возвращается.У меня никогда не было такой проблемы на моей тестовой машине, это происходит только в производстве.Я не могу воссоздать ту же среду со многими пользователями на моей тестовой машине.
Логика этого приложения:
1) Пользователь вводит имя пользователя и передает, информация просматривается с помощью вызова БД SQL, еслисоответствует, пользователь проходит проверку подлинности через FormsAuthentication.RedirectFromLoginPage (имя пользователя, ложь)
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);
Это работает почти все время.Есть идеи, почему он может время от времени терпеть неудачу?