リフレクターショーを:私はスローMembership.GetUser()への呼び出しを持って
を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;
}
一見最も可能性の高い説明は、次のとおりです。
他のすべてのパスはnullのテストがあるようです。
したがって、HttpContext.Userのタイプと内容をトレースすることをお勧めします。
HttpContext.Current.UserはIPrincipalであり、私が知っているIPrincipalの最も具体的な実装では、nullの識別情報を許可していないため、HttpContext.UserがNULLになると思います。
出典
2009-03-19 17:08:17
Joe