c# - 将 asp.net 成员资格 web.config 设置移动到数据库这甚至可能吗?

标签 c# sql web-config asp.net-membership membership-provider

我希望得到富有成效的答案。我应该如何将 web.config 中为 asp.net 成员提供的设置移动到数据库中以进行跨应用程序自定义。例如成员(member)信息包括如下

  <providers>
    <add 
      name="OdbcProvider" 
      type="Samples.AspNet.Membership.OdbcMembershipProvider" 
      connectionStringName="OdbcServices"
      enablePasswordRetrieval="true"
      enablePasswordReset="true"
      requiresQuestionAndAnswer="true" 
      writeExceptionsToEventLog="true" />
  </providers>
</membership>

额外

.NET 2.0

ASP.NET 2.0

相关

moving asp.net membership specific settings to a separate config file

最佳答案

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

您可以通过几种方式做到这一点,一种是将您需要的任何属性注入(inject)到提供程序的实例中(此示例假设您正在使用 SqlMembershipProvider 并展示了如何注入(inject)连接字符串,但您可以查看 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);
}

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

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

多年来,我们根据需要定制的程度完成了这三项工作。

关于c# - 将 asp.net 成员资格 web.config 设置移动到数据库这甚至可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8257028/

相关文章:

c# - 在 MEF 中正确使用 [Import] 属性

c# - 如何在网络上使用命名管道?

c# - 知道文件被访问 IIS

mysql - mysql如何实现自增?

java - 在 Java 中使用 MySQL 数据库的一些代码总是返回错误/未创建帐户?

WCF - .Net 4.5 安装后的端点冲突

asp.net - 如何确定哪个父配置文件正在锁定 web.config 设置?

c# - 为技能使用添加冷却时间

sql - 如何在 MySQL 数据库中处理同时查询?

web-config - web.config 将多个域重定向到一个域