关于 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)将无法开箱即用地连接。

为了能够连接,您需要执行以下操作

  • 启用旧的身份验证模型
  • 将有线协议加密设置从必需降级为启用
  • 在旧身份验证模型中创建用户
  • 这些步骤都需要对 firebird.conf 进行编辑。如果您将 Firebird 安装到 Program Files,您需要确保您的编辑器以管理员身份运行才能保存更改。

    启用旧式身份验证

    要启用旧式身份验证,您需要编辑或添加以下行到 firebird.conf:(注意以 # 为前缀的行是注释!)

    AuthServer = Srp, Legacy_Auth

    降级有线协议加密

    要降级有线协议加密设置,您需要编辑或添加以下行到 firebird.conf:

    WireCrypt = Enabled

    创建旧身份验证用户

    为了能够在旧版身份验证模型中创建用户,您需要通过编辑或添加以下行到 firebird.conf 来启用旧版 usermanager 插件:

    UserManager = Srp, Legacy_UserManager

    完成上述更改后,重新启动 Firebird,使用您最喜欢的数据库管理工具使用 SYSDBA 或其他管理员帐户连接到(任何)Firebird 3 数据库,并使用带有 CREATE USER 的 Legacy_UserManager 创建一个用户(将用户名和密码 legacy 替换为合适的值):

    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 帐户。谢谢你解释这个!

    以上是关于 c#:Firebird ADO.NET 4.10.0.0 数据提供程序是否与 Firebird 3.0 一起使用?的全部内容。
    THE END
    分享
    二维码
    < <上一篇
    下一篇>>