1

当提供已存在的用户名时,ProfileBase.Create 是否返回与现有用户关联的 ProfileBase(如果用户名不存在,则创建一个新用户并返回新用户)?

为这个琐碎的问题道歉,但 MSDN 文档确实没有什么帮助。

4

2 回答 2

3

这是代码ProfileBase.Create()

public static ProfileBase Create(string username, bool isAuthenticated)
{
    if (!ProfileManager.Enabled)
    {
        throw new ProviderException(SR.GetString("Profile_not_enabled"));
    }
    InitializeStatic();
    if (s_SingletonInstance != null)
    {
        return s_SingletonInstance;
    }
    if (s_Properties.Count == 0)
    {
        lock (s_InitializeLock)
        {
            if (s_SingletonInstance == null)
            {
                s_SingletonInstance = new DefaultProfile();
            }
            return s_SingletonInstance;
        }
    }
    HttpRuntime.CheckAspNetHostingPermission(AspNetHostingPermissionLevel.Low, "Feature_not_supported_at_this_level");
    return CreateMyInstance(username, isAuthenticated);
}


private static ProfileBase CreateMyInstance(string username, bool isAuthenticated)
{
    Type profileType;
    if (HostingEnvironment.IsHosted)
    {
        profileType = BuildManager.GetProfileType();
    }
    else
    {
        profileType = InheritsFromType;
    }
    ProfileBase base2 = (ProfileBase) Activator.CreateInstance(profileType);
    base2.Initialize(username, isAuthenticated);
    return base2;
}

看起来它总是返回 ProfileBase 的新实例。

于 2010-01-24T17:51:28.473 回答
1

正如我所想,Create方法实际上是检索配置文件。谁设计了这些 API?!

另请参见此处

于 2010-01-24T18:18:41.660 回答