Отражатель показывает реализацию Membership.GetCurrentUserName:
private static string GetCurrentUserName()
{
if (HostingEnvironment.IsHosted)
{
HttpContext current = HttpContext.Current;
if (current != null)
{
return current.User.Identity.Name;
}
}
IPrincipal currentPrincipal = Thread.CurrentPrincipal;
if ((currentPrincipal != null) && (currentPrincipal.Identity != null))
{
return currentPrincipal.Identity.Name;
}
return string.Empty;
}
На первый взгляд наиболее вероятное объяснение таково:
HttpContext.Current не является нулевым, и
HttpContext.Current.User имеет значение NULL или имеет нулевое свойство Identity.
Кажется, что все другие пути имеют тест на ноль.
Поэтому я предлагаю вам проследить тип и содержимое HttpContext.User.
HttpContext.Current.User - это IPrincipal, и большинство известных ему реализаций IPrincipal, о которых я знаю, не допускают нулевую идентичность, поэтому я бы сделал ставку на то, что HttpContext.User будет нулевым.