gpt4 book ai didi

asp.net-membership - 自定义 ASP.NET SqlMembershipProvider - 处理连接字符串

转载 作者:行者123 更新时间:2023-12-03 03:43:49 25 4
gpt4 key购买 nike

我正在创建一个自定义 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)

存储连接字符串名称的正确方法是什么,以便它在我的自定义成员(member)资格提供程序中全局可用?

谢谢!

最佳答案

如果在获取配置集合时还剩下任何条目,

ProviderBase 将抛出 ConfigurationException,以便每个提供程序在调用 之前删除其配置条目基础.初始化

您在 this answer 中发现的问题是你必须在调用base.Initialize之前获取你的值。

抱歉,我第一眼就错过了。

<小时/>

这篇文章的其余部分是历史性的,虽然技术上是正确的,但忽略了上面列举的突出问题。

首先 - 尝试WebConfigurationManager.ConnectionStrings

WebConfigurationManager 负责应用 web.config 的层次结构,从 windows\microsoft.net\framework\2.0xxxx\web.config 一直到您的应用程序。

此行为在 ConfigurationManager 中不存在,它通常处理 machine.config 到 app.config。

<小时/>

如果这不能解决您的问题,如果 _ConnectionStringName 确实在 Initialize 中正确分配,则您必须覆盖代码中其他位置的值。

首先,设置断点并确保 _ConnectionStringName 按预期设置。

然后找到对该字段的所有引用并确保没有错误。

当然,这是假设 _ConnectionStringName 是私有(private)字段。如果不是,请使其如此并查找编译错误。

关于asp.net-membership - 自定义 ASP.NET SqlMembershipProvider - 处理连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3762567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com