3

我目前正在尝试让我的 ASP.net 4.5 项目连接到最近发布的 Firebird 3.0。

我正在使用 Visual Studio 2015 社区版 Firebird 3(64 位),并使用 NuGet 获取 ADO.NET 4.10.0.0。

但是,当我尝试连接时,我收到以下消息的异常:

this.connect.ServerVersion 引发了“System.InvalidOperationException”类型的异常

我收到的其他一些消息:

消息:“连接已关闭”
来源:FirebirdSQL.Data.Fierbird.Client
StackTrace:
位于 C:\Users\Jiri\Documents\devel\NETProvider\working\NETProvider\src 中的 FirebirdSql.Data.FirebirdClient.FbConnection.get_ServerVersion() \FirebirdSql.Data.FirebirdClient\FirebirdClient\FbConnection.cs:第 217 行

IBExpert 连接没有任何问题。

此环境以前使用 Firebird 2.5 和较旧的 ADO.Net

现在最好的猜测是它不受支持,但我在网上的研究尚无定论(据我所知,有迹象表明它已使用 Firebird 3 RC1 进行了测试)

如果有人能指出我正确的方向来实现这一点,那就太棒了。

提前致谢!

4

1 回答 1

8

我假设您安装了 Firebird 3 并且没有修改其任何配置来回答这个问题。默认情况下,Firebird 3 的安装会有一些严格的安全设置:

  • 它将仅支持新的 SRP 身份验证模型
  • 它将需要有线协议加密

这意味着尚不支持 SRP 身份验证模型和有线协议加密的驱动程序(如 Firebird .NET 提供程序 4.10)将无法开箱即用地连接。

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

  1. 启用旧的身份验证模型
  2. 将有线协议加密设置从必需降级为启用
  3. 在旧身份验证模型中创建用户

这些步骤都需要对firebird.conf. 如果您将 Firebird 安装到Program Files中,则需要确保您的编辑器以管理员身份运行才能保存更改。

启用旧式身份验证

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

AuthServer = Srp, Legacy_Auth

降级有线协议加密

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

WireCrypt = Enabled

创建旧身份验证用户

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

UserManager = Srp, Legacy_UserManager

完成上述更改后,重新启动 Firebird,使用您最喜欢的数据库管理工具使用 SYSDBA 或其他管理员帐户连接到(任何)Firebird 3 数据库,并使用 Legacy_UserManager 创建一个用户CREATE USER(将用户名和密码替换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为如上所述。

于 2016-04-23T07:24:47.123 回答