关于 c#:Firebird ADO.NET 4.10.0.0 数据提供程序是否与 Firebird 3.0 一起使用?
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)将无法开箱即用地连接。
为了能够连接,您需要执行以下操作
这些步骤都需要对
启用旧式身份验证
要启用旧式身份验证,您需要编辑或添加以下行到
|
AuthServer = Srp, Legacy_Auth
|
降级有线协议加密
要降级有线协议加密设置,您需要编辑或添加以下行到
|
WireCrypt = Enabled
|
创建旧身份验证用户
为了能够在旧版身份验证模型中创建用户,您需要通过编辑或添加以下行到
|
UserManager = Srp, Legacy_UserManager
|
完成上述更改后,重新启动 Firebird,使用您最喜欢的数据库管理工具使用 SYSDBA 或其他管理员帐户连接到(任何)Firebird 3 数据库,并使用带有
|
CREATE USER legacy PASSWORD 'legacy' USING PLUGIN Legacy_UserManager
|
确保提交,否则用户并没有真正创建。
现在您应该可以使用刚刚创建的用户从 C# 进行连接了。
这也记录在 Firebird 3 发行说明,第 12 章兼容性问题,旧版身份验证中。
不推荐使用
Firebird .NET 提供程序版本 5.0.0.0 及更高版本的支持
请注意,Firebird .NET 提供程序版本 5.0.0.0 添加了对 SRP 的支持(没有有线协议加密)。因此,从 Firebird .NET 提供程序版本 5 开始,您可以使用新的身份验证模型。只需确保将有线协议加密(设置
相关讨论
- 谢谢马克。尝试您的步骤后,我仍然遇到问题,但基本上使用默认设置再次运行安装程序,但启用了旧式身份验证。我查看了您指出的 Firebird.conf 中的更改,尽管它们略有不同,但关键点都在那里。我确实遇到了一些奇怪的行为(可能来自 IBExpert,或者我在凌晨 1:30 尝试这个并犯了错误),但我稍后会进行测试,如果我有一个单独的问题,我会发布一个单独的问题。非常感谢您的演练!
- @CSharpNewb 我使用全新安装的 Firebird 3 对其进行了测试,所以我希望我的步骤能够奏效。如果您为 Srp 和 Legacy_Auth 创建了一个同时存在的用户,您可能会遇到这个问题:stackoverflow.com/questions/36813702/...
- 谢谢马克,你链接到的问题正是我注意到的。但是您在那里的描述解释了为什么我看到两个 SYSDBA 帐户。谢谢你解释这个!