2

我有一个ASP.NET配置文件实现的问题。这是我的个人资料代码:ASP.NET自定义配置文件错误

public class UserProfile: ProfileBase 
{ 
    public static void Get() 
    { 
     return (UserProfile)Create(Membership.GetUser().UserName); 
    } 
    public static void Get(string username) 
    { 
     return (UserProfile)Create(username); 
    } 

    //this property works 
    [SettingsAllowAnonymous(false)] 
    public string FirstName 
    { 
     get{ return base.GetProperty("FirstName") as String; } 
     set{ base.SetPropertyValue("FirstName", value); } 
    } 

    //this property works 
    [SettingsAllowAnonymous(false)] 
    public string LastName 
    { 
     get{ return base.GetProperty("LastName") as String; } 
     set{ base.SetPropertyValue("LastName", value); } 
    } 

    //this property throws "The settings property 'Email' was not found." error. 
    [SettingsAllowAnonymous(false)] 
    public string EmailAddress 
    { 
     get{ return base.GetProperty("Email") as String; } 
     set{ base.SetPropertyValue("Email", value); } 
    } 

    //this property throws "The settings property 'Telephone' was not found." error. 
    [SettingsAllowAnonymous(false)] 
    public string TelephoneNumber 
    { 
     get{ return base.GetProperty("Telephone") as String; } 
     set{ base.SetPropertyValue("Telephone", value); } 
    } 
} 

我的web配置是这样的:

<profile inherits="UserProfile" defaultProvider="SqlProfileProvider"> 
    <providers> 
     <add 
      name="SqlProfileProvider" 
      type="System.Web.Profile.SqlProfileProvider" 
      connectionStringName="Profile" 
      applicationName="Management" /> 
    </providers> 
</profile> 

出于某种原因,当代码执行和我检索或更新它吹了当前用户的配置文件。然而,更好奇的是FirstName和LastName属性工作正常。只有在访问/更新EmailAddress和TelephoneNumber属性时才会出现错误。

如果我在名称,姓氏,EmailAddress和TelephoneNumber属性的web.config配置文件部分中添加<properties>部分,会显示不同类型的错误 - “属性已被定义”或沿着行...

有关如何解决此问题的任何想法?此外,您需要知道配置文件系统的后端是SQL Azure,而前端是Azure WCF服务。

感谢,

<bleepzter/> 
+2

您确定您的字段名称与属性名称匹配吗?电子邮件!= EmailAddress &&电话!=电话号码 – 2011-01-29 00:02:45

+0

谢谢。请将此作为实际答案写下,因为这是答案。谁会想到,字段名称必须匹配?我的意思是ProfileBase将属性实现为字典/散列表。我认为它与用于Session/ViewState的StateBag类似。绝对没有我找到一篇文章,指出内部属性键必须匹配!此外,用于Commerce Server的UPM成员/角色提供者的实现具有与其属性名称不同的键。 – bleepzter 2011-01-29 00:51:40

回答

3

你确定你与属性名相匹配的字段名?电子邮件!=电子邮件地址& &电话!=电话号码