将asp.net成员资格web.config设置移动到数据库这是否可能?

Dee*_*ons 5 c# sql asp.net-membership web-config membership-provider

我希望能有效地回答这个问题.我应该如何将web.config中为asp.net成员资格提供的设置移动到数据库中以进行跨应用程序自定义.例如,会员信息包括以下内容

  <providers>
    <add 
      name="OdbcProvider" 
      type="Samples.AspNet.Membership.OdbcMembershipProvider" 
      connectionStringName="OdbcServices"
      enablePasswordRetrieval="true"
      enablePasswordReset="true"
      requiresQuestionAndAnswer="true" 
      writeExceptionsToEventLog="true" />
  </providers>
</membership>
Run Code Online (Sandbox Code Playgroud)

额外

.NET 2.0

ASP.NET 2.0

有关

将asp.net会员特定设置移动到单独的配置文件

ena*_*ash 4

是的你可以!我们已经成功地做到了这一点。

您可以通过几种方式来完成此操作,一种是将您需要的任何属性注入到提供程序的实例中(此示例假设您正在使用SqlMembershipProvider并显示如何注入连接字符串,但您可以看一下源代码)OdbcMembershipProvider来了解自己在哪里执行此操作):

public static void InjectConnectionStringIntoSqlMembershipProvider(SqlMembershipProvider provider, string connectionString) {
    Type t = typeof(SqlMembershipProvider);
    FieldInfo fi = t.GetField("_sqlConnectionString", BindingFlags.NonPublic | BindingFlags.Instance);
    if (fi == null) throw new InvalidOperationException("Invalid private identifier.");
    fi.SetValue(provider, connectionString);
}
Run Code Online (Sandbox Code Playgroud)

或者,您可以通过创建继承的类来创建您自己的提供程序MembershipProvider

或者,正如 @Andomar 的链接所建议的,您可以从任何实现MembershipProvider(例如SqlMembershipProvider等)继承,以获得您想要的东西。

多年来我们已经完成了这三项工作,具体取决于需要多少定制。