Asp.net mvc 阅读会员资格/个人资料/角色提供程序';s从web.config以外的外部文件连接

Asp.net mvc 阅读会员资格/个人资料/角色提供程序';s从web.config以外的外部文件连接,asp.net-mvc,Asp.net Mvc,在我的MVC应用程序中,我正在从web.config读取成员资格/配置文件/角色提供程序的连接字符串。在web.config中,我正在运行时编写此连接字符串。 现在的问题是,如果我在运行时更新web.config,那么每次应用程序重新启动时,它都会降低应用程序的速度 因此,我想从任何外部文件(web.config除外)读取成员资格/配置文件/角色提供程序的连接字符串。因为如果在运行时更新该外部文件,将不会导致应用程序重新启动 因此,请建议我如何从外部文件中读取角色提供程序的连接字符串 提前谢谢

在我的MVC应用程序中,我正在从web.config读取成员资格/配置文件/角色提供程序的连接字符串。在web.config中,我正在运行时编写此连接字符串。 现在的问题是,如果我在运行时更新web.config,那么每次应用程序重新启动时,它都会降低应用程序的速度

因此,我想从任何外部文件(web.config除外)读取成员资格/配置文件/角色提供程序的连接字符串。因为如果在运行时更新该外部文件,将不会导致应用程序重新启动

因此,请建议我如何从外部文件中读取角色提供程序的连接字符串

提前谢谢 阿尤西



我可以从外部文件获取角色提供程序的连接字符串,但不能从web.config获取。
SqlMembershipProvider
依赖于web.config来检索连接字符串设置,并且将引发连接字符串未通过ASP.NET配置模型提供的异常

也就是说,
SqlMembershipProvider
不是一个密封的类。您可以重写它的初始化行为,以实现与您描述的类似的效果

如果您有有限数量的连接字符串,就像您试图在不同阶段(例如开发、测试、生产等)管理连接字符串一样,您可以在web.config中包含所有连接字符串,每个连接字符串都有自己的名称,并在自定义提供程序中实现一些运行时逻辑以在它们之间切换

public class CustomSqlMembershipProvider : SqlMembershipProvider
{
    public override void Initialize(string name, NameValueCollection config)
    {
        string connStringName = // retrieve from wherever you please...
        config["connectionStringName"] = connStringName;
        base.Initialize(name, config);
    }
}
如果需要支持任意多个连接字符串,这种方法的局限性是显而易见的。即使如此,如果重写
Initialize
方法并充分替换其内部行为,仍然可以通过继承构建具有类似SqlMembershipProvider行为的自定义成员资格提供程序


祝你好运。

我相信如果你在不重新加载的情况下更新了connectionstring,那么你就不会有正确的connectionstring。你多久更新一次Web.config?是否有原因需要频繁更新web.config,从而导致用户出现问题?一般来说,至少对于我在web.config上使用过的应用程序,被覆盖不会影响我的应用程序的性能,而且我通常会将连接字符串保存在其中,或者保存在web.config引用的它们自己的db.config文件中。