0

我在这里使用 Jon Galloway 的(稍微过时的)示例实现了 ASP.NET 配置文件提供程序和成员资格提供程序:

我得到错误提供者必须实现类'System.Web.Profile.ProfileProvider'

根据示例,我创建了一个继承自 ProfileBase 的自定义 UserProfile

public class UserProfile : ProfileBase
{        
    public static UserProfile GetUserProfile(string username)
    {
        if (username != null)
        {
            var profile = Create(username) as UserProfile;
            return profile;
        }
    }

    public static UserProfile GetUserProfile()
    {
        var membershipUser = MembershipProvider.GetUser();
        if (membershipUser != null)
            return Create(membershipUser.UserName) as UserProfile;
    }

    [SettingsAllowAnonymousAttribute(true)]
    public virtual string Name
    {
        get { return base["Name"] as string; }
        set { base["Name"] = value; }
    }
}

我从这样的类库中调用上述方法:

var profile = UserProfile.GetUserProfile(name);

反过来,我从具有 app.config 的单元测试项目中调用该方法:

<profile enabled="true" defaultProvider="MyProfileProvider" inherits="NAMESPACE.UserProfile, NAMESPACE">
  <providers>
    <clear/>
    <add
      name="MyProfileProvider"
      connectionStringName="MembershipConnection"
      applicationName="/"
      type="NAMESPACE.UserProfile, NAMESPACE"
      />
  </providers>
  <properties>
    <add name="Name" type="String"/>
  </properties>
</profile>

从 ProfileBase 继承(如 Jon 的示例)应该足够了吧?我想我已经使用了“类型”和“继承”属性的所有变体,我在这里遗漏了什么吗?

4

1 回答 1

0

我已经设法使用此示例的变体至少保存了配置文件值

dynamic profile = ProfileBase.Create(UserName);
profile.Name = name;
profile.Save();

不知道如何检索相同的属性,因为 ProfileBase 没有这样的方法......

于 2013-05-23T14:42:05.730 回答