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

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

但是,当我尝试连接时,出现异常并显示以下消息:



我收到的其他一些消息:



IBExpert 连接没有任何问题。

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

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

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

提前致谢!

最佳答案

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

  • 仅支持新的 SRP 认证模型
  • 需要有线协议(protocol)加密

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

    为了能够连接,您需要执行以下操作
  • 启用旧的身份验证模型
  • 将有线协议(protocol)加密设置从必需降级为启用
  • 在旧认证模型中创建用户

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

    启用传统身份验证

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

    降级有线协议(protocol)加密

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

    创建旧身份验证用户

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

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

    CREATE USER legacy PASSWORD 'legacy' USING PLUGIN Legacy_UserManager
    

    一定要commit,否则这个用户就不是真的创建了。

    现在您应该能够使用您刚刚创建的用户从 C# 进行连接。

    这也记录在 Firebird 3 Release Notes, Chapter 12 Compatibility Issues, Legacy Authentication 中。

    不推荐使用 gsec 或服务功能来创建用户。如果您仍想使用其中任何一个在旧身份验证模型中创建用户,则需要编辑 firebird.conf 并将 Legacy_UserManager 放在列表中的第一个。

    支持 Firebird .NET 提供程序 5.0.0.0 及更高版本

    请注意,Firebird .NET 提供程序版本 5.0.0.0 添加了对 SRP(无​​有线协议(protocol)加密)的支持。因此,从 Firebird .NET 提供程序版本 5 开始,您可以使用新的身份验证模型。只需确保将有线协议(protocol)加密(设置 WireCrypt )从 Required (默认)降级为 Enabled ,如上所述。

    关于c# - Firebird ADO.NET 4.10.0.0 数据提供程序是否适用于 Firebird 3.0?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36752916/

    10-13 01:46