2009-03-19 7 views

Répondre

3

montre de réflecteur la mise en œuvre de Membership.GetCurrentUserName est:

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; 
} 

À première vue, l'explication la plus probable est que:

  • HttpContext.Current est non nul, et

  • HttpContext.Current.User est nul ou a une propriété nulle d'identité.

Tous les autres chemins semblent avoir un test de null.

Je vous suggère donc de suivre le type et le contenu de HttpContext.User. HttpContext.Current.User est un IPrincipal, et les implémentations les plus concrètes d'IPrincipal que je connais n'autorisent pas une identité nulle, donc je parierais que HttpContext.User est null.

Questions connexes