Does Firebird ADO.NET 4.10.0.0 Data provider work with Firebird 3.0?
我目前正在尝试让我的 ASP.net 4.5 项目连接到最近发布的 Firebird 3.0。
我正在使用 Visual Studio 2015 社区版 Firebird 3(64 位),并使用 NuGet 获取 ADO.NET 4.10.0.0。
但是,当我尝试连接时,我收到以下消息的异常:
this.connect.ServerVersion threw an exception of type ‘System.InvalidOperationException’
我收到的其他一些消息:
Message:”The connection is closed”
Source: FirebirdSQL.Data.Fierbird.Client
StackTrace:
at FirebirdSql.Data.FirebirdClient.FbConnection.get_ServerVersion() in C:\\Users\\Jiri\\Documents\\devel\
ETProvider\\working\
ETProvider\\src\\FirebirdSql.Data.FirebirdClient\\FirebirdClient\\FbConnection.cs:line 217
IBExpert 连接没有任何问题。
此环境以前可用于 Firebird 2.5 和较旧的 ADO.Net
目前最好的猜测是它不受支持,但我在网上的研究尚无定论(据我所知,有迹象表明它已使用 Firebird 3 RC1 进行了测试)
如果有人能指出我正确的方向来实现这一点,那就太棒了。
提前致谢!
- 您是否为旧版身份验证配置了 Firebird 3,是否创建了旧版帐户,或者您是否只是安装并使用?
- 下周会有一个测试版:mail-archive.com/firebird-net-provider@lists.sourceforge.net??/…
- Beta 提供程序是否有任何更新?
我在假设您安装了 Firebird 3 并且没有修改其任何配置的情况下回答这个问题。默认情况下,Firebird 3 的安装会有一些严格的安全设置:
- 它将仅支持新的 SRP 身份验证模型
- 它将需要有线协议加密
这意味着尚不支持 SRP 身份验证模型和有线协议加密的驱动程序(如 Firebird .NET 提供程序 4.10)将无法开箱即用地连接。
为了能够连接,您需要执行以下操作
这些步骤都需要对 firebird.conf 进行编辑。如果您将 Firebird 安装到 Program Files,您需要确保您的编辑器以管理员身份运行才能保存更改。
启用旧式身份验证
要启用旧式身份验证,您需要编辑或添加以下行到 firebird.conf:(注意以 # 为前缀的行是注释!)
|
1
|
AuthServer = Srp, Legacy_Auth
|
降级有线协议加密
要降级有线协议加密设置,您需要编辑或添加以下行到 firebird.conf:
|
1
|
WireCrypt = Enabled
|
创建旧身份验证用户
为了能够在旧版身份验证模型中创建用户,您需要通过编辑或添加以下行到 firebird.conf 来启用旧版 usermanager 插件:
|
1
|
UserManager = Srp, Legacy_UserManager
|
完成上述更改后,重新启动 Firebird,使用您最喜欢的数据库管理工具使用 SYSDBA 或其他管理员帐户连接到(任何)Firebird 3 数据库,并使用带有 CREATE USER 的 Legacy_UserManager 创建一个用户(将用户名和密码 legacy 替换为合适的值):
|
1
|
CREATE USER legacy PASSWORD ‘legacy’ USING PLUGIN Legacy_UserManager
|
确保提交,否则用户并没有真正创建。
现在您应该可以使用刚刚创建的用户从 C# 进行连接了。
这也记录在 Firebird 3 发行说明,第 12 章兼容性问题,旧版身份验证中。
不推荐使用 gsec 或服务功能来创建用户。如果您仍想使用其中任何一个在旧式身份验证模型中创建用户,则需要编辑 firebird.conf 并将 Legacy_UserManager 放在列表的首位。
Firebird .NET 提供程序版本 5.0.0.0 及更高版本的支持
请注意,Firebird .NET 提供程序版本 5.0.0.0 添加了对 SRP 的支持(没有有线协议加密)。因此,从 Firebird .NET 提供程序版本 5 开始,您可以使用新的身份验证模型。只需确保将有线协议加密(设置 WireCrypt)从 Required(默认)降级为 Enabled,如上所述。
- 谢谢马克。尝试您的步骤后,我仍然遇到问题,但基本上使用默认设置再次运行安装程序,但启用了旧式身份验证。我查看了您指出的 Firebird.conf 中的更改,尽管它们略有不同,但关键点都在那里。我确实遇到了一些奇怪的行为(可能来自 IBExpert,或者我在凌晨 1:30 尝试这个并犯了错误),但我稍后会进行测试,如果我有一个单独的问题,我会发布一个单独的问题。非常感谢您的演练!
- @CSharpNewb 我使用全新安装的 Firebird 3 对其进行了测试,所以我希望我的步骤能够奏效。如果您为 Srp 和 Legacy_Auth 创建了一个同时存在的用户,您可能会遇到这个问题:stackoverflow.com/questions/36813702/…
- 谢谢马克,你链接到的问题正是我注意到的。但是您在那里的描述解释了为什么我看到两个 SYSDBA 帐户。谢谢你解释这个!
来源:https://www.codenong.com/36752916/
