我正在创建一个自定义 SqlMembershipProvider 类,以向基类添加一些增强功能。不过,我正在忙于处理连接字符串。如何从配置中读取连接字符串名称并使其可供其余方法使用?
现在我有:
public override void Initialize(string name, NameValueCollection config)
{
base.Initialize(name, config);
_ConnectionStringName = config["connectionStringName"];
}
但在其他方法中,_ConnectionStringName 变量为 null:
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[_ConnectionStringName].ConnectionString)
存储连接字符串名称以便在我的自定义会员资格提供程序中全局可用的正确方法是什么?
Thanks!
ProviderBase
会抛出一个ConfigurationException
如果在获取时配置集合中还剩下任何条目,那么每个提供者都会在调用之前删除它的配置条目base.Initialize
.
正如您所发现的,该问题是由于这个答案 https://stackoverflow.com/questions/3737260/customizing-asp-net-membership-provider-to-add-logging-capabilities/3775206#3775206是你必须在调用之前获取你的值base.Initialize
.
抱歉,我第一眼就错过了。
这篇文章的其余部分是历史性的,虽然技术上是正确的,但忽略了上面列举的突出问题。
第一次尝试WebConfigurationManager.ConnectionStrings
.
WebConfigurationManager
处理应用 web.config 的层次结构,从 windows\microsoft.net\framework\2.0xxxx\web.config 一直到您的应用程序。
此行为不存在于ConfigurationManager
,通常处理 machine.config 到 app.config。
如果这不能解决您的问题,您必须覆盖代码中其他位置的值(如果确实如此)_ConnectionStringName
正在被正确分配Initialize
.
首先,设置断点并确保_ConnectionStringName
正在按预期设置。
然后找到对该字段的所有引用并确保没有错误。
当然,这是假设的_ConnectionStringName
是一个私有字段。如果不是,请使其如此并查找编译错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)