提供者必须实现类'System.Web.Profile.ProfileProvider'

时间:2013-05-23 12:49:27

标签: asp.net profile

我使用Jon Galloway(稍微过时)example here实现了ASP.NET Profile Provider和会员提供者:

我收到错误提供商必须实现类'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的例子)应该足够了吗?我想我已经使用了'type'和'inherit'属性的所有变体,我在这里遗漏了什么?

1 个答案:

答案 0 :(得分:0)

我设法使用this example

上的变体至少保存了个人资料值
dynamic profile = ProfileBase.Create(UserName);
profile.Name = name;
profile.Save();

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