关于 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 并且没有修改其任何配置的情况下回答这个问题。默认情况下,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,如上所述。