В настоящее время я пытаюсь использовать профили ASP.Net для хранения дополнительной информации о пользователях, зарегистрированных на нашем сайте.
Соответствующий пример кода:
UserProfile.cs
public class UserProfile: System.Web.Profile.ProfileBase
{
public static UserProfile GetUserProfile(string username)
{
return Create(username) as UserProfile;
}
public static UserProfile GetUserProfile()
{
return GetUserProfile(Membership.GetUser().UserName);
}
public string FacebookUid
{
get
{
return base["FacebookUid"] as string;
}
set
{
base["FacebookUid"] = value;
}
}
}
Web.config
<profile enabled="true" inherits="WIF.Web.STS.Classes.UserProfile" defaultProvider="XmlProfileProvider" >
<properties>
<add name="FacebookUid" />
</properties>
<providers>
<add name="XmlProfileProvider" type="Artem.Web.Security.XmlProfileProvider, Artem.Web.Security.Xml" applicationName="/" fileName="Profiles.xml" folder="~/App_Data/"/>
</providers>
</profile>
Register.aspx.cs
profile = WIF.Web.STS.Classes.UserProfile.GetUserProfile(emailAddress);
profile.FacebookUid = "";
Когда я покидаю FacebookUid, определенный в web.config; Я получаю эту ошибку от web.config:
Configuration Error: This profile property has already been defined.
Я дважды проверил web.config; эта запись свойства встречается только один раз в файле web.config.
Я подумал, что это потому, что я настроил свойство с тем же именем в классе UserProfile. Я удалил запись properties / add [name = 'FacebookUid'] из web.config. Однажды я сделал это; Я получаю эту ошибку при попытке установить значение FacebookUid в Register.aspx.cs:
The settings property 'FacebookUid' was not found
Line 76: profile["FacebookUid"] = "";
Я попробовал еще раз, на этот раз напрямую используя класс ProfileBase:
Пересмотренный Register.aspx.cs
var profile = System.Web.Profile.ProfileBase.Create(emailAddress,true);
profile["FacebookUid"] = "";
Пересмотренный web.config:
<profile enabled="true" defaultProvider="XmlProfileProvider" >
<properties>
<add name="FacebookUid" />
</properties>
<providers>
<add name="XmlProfileProvider" type="Artem.Web.Security.XmlProfileProvider, Artem.Web.Security.Xml" applicationName="/" fileName="Profiles.xml" folder="~/App_Data/"/>
</providers>
</profile>
Я пробовал это с помощью свойств / add [name = 'FacebookUid'] и без; получил те же ошибки, что и выше, в тех же случаях.
Я в тупике, и Google / Binging ни к чему не привели. Кто-нибудь здесь имеет представление о том, что может происходить и / или как решить эту проблему? Любой конструктивный вклад приветствуется.
Спасибо,
Frank