2

我正在创建一个自定义 SqlMembershipProvider 类,我想在它上面有一个新的公共属性,它允许用户在 web.config 中设置,以及已经在 SqlMembershipProvider 基类之外的其他公共属性。但是,当我添加我的属性并尝试运行该应用程序时,我收到黄屏死机错误,指出属性无法识别“DataLocationDescription”。 我需要做什么才能在 web.config 中使用该类的其他属性访问此属性?

这是我的代码:

public class CustomSqlMembershipProvider : SqlMembershipProvider
{


    public string DataLocationDescription { get; set; }

}

这是 web.config 文件,我在其中指定了我的 Property DataLocationDescription:

          <add name="CustomizedMembershipProvider" 
           type="ClassLibraries.Web.Security.CustomSqlMembershipProvider" 
           connectionStringName="SQLConnection" 
           maxInvalidPasswordAttempts="5" 
           passwordAttemptWindow="30" DataLocationDescription="Tier2"/>

我尝试使用 ConfigurationProperty 属性,但这没有任何区别。

[ConfigurationProperty("DataLocationDescription", IsRequired = true)]  

任何帮助是极大的赞赏。

谢谢!跳蚤

4

1 回答 1

1

它不是SqlMembershipProvider反序列化配置文件中的成员资格/提供者部分的部分,而是 ConfigurationManager 类。membership元素的架构是固定的,因此您无能为力。

简而言之,配置系统不知道您的额外属性。

相反,您可以创建自己的配置部分,并在应用程序开始的某处对自定义成员资格提供程序进行后初始化。所以,你现在有一个像CustomSqlMembershipProvider一个元素的部分(或属性,你的选择),DataLocationDescription值。

于 2013-01-01T23:07:06.110 回答