我目前正在尝试将我的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
堆栈跟踪:
at FirebirdSql.Data.FirebirdClient.FbConnection.get_ServerVersion()在C:\ Users \ Jiri \ Documents \ devel \ NETProvider \ working \ NETProvider \ src \ FirebirdSql.Data.FirebirdClient \ FirebirdClient \ FbConnection.cs:第217行
IBExpert连接没有任何问题。
此环境以前适用于Firebird 2.5和较旧的ADO.Net
现在最好的猜测是,它不受支持,但我的在线研究尚无定论(据我所知,有迹象表明它已经过Firebird 3 RC1测试)
如果有人能指出我正确的方向来实现这一目标,那就太棒了。
提前致谢!
答案 0 :(得分:8)
我在假设您安装Firebird 3并且未修改其任何配置的情况下回答此问题。默认情况下,Firebird 3的安装将具有一些严格的安全设置:
这意味着尚未支持SRP身份验证模型和有线协议加密的驱动程序(如Firebird .NET提供程序4.10)将无法立即连接。
为了能够连接,您需要执行以下操作
这些步骤都需要修改firebird.conf
。如果您将Firebird安装到Program Files
,则需要确保您的编辑器以管理员身份运行才能保存更改。
要启用旧身份验证,您需要编辑或将以下行添加到firebird.conf
:(请注意,前缀为#
的行是注释!)
AuthServer = Srp, Legacy_Auth
要降级有线协议加密设置,您需要编辑或添加以下行到firebird.conf
:
WireCrypt = Enabled
为了能够在旧版身份验证模型中创建用户,您需要通过编辑或将以下行添加到firebird.conf
来启用旧版用户管理器插件:
UserManager = Srp, Legacy_UserManager
完成上述更改后,重新启动Firebird,使用您最喜欢的数据库管理工具使用SYSDBA或其他管理员帐户连接到(任意)Firebird 3数据库,并使用带有CREATE USER
的Legacy_UserManager创建用户(替换用户名和密码{{ 1}}具有合适的值):
legacy
确保提交,否则用户并未真正创建。
现在,您应该可以使用刚刚创建的用户从C#连接。
这也记录在Firebird 3 Release Notes, Chapter 12 Compatibility Issues, Legacy Authentication。
中不建议使用CREATE USER legacy PASSWORD 'legacy' USING PLUGIN Legacy_UserManager
或服务功能来创建用户。如果您仍想使用其中任何一个在旧版身份验证模型中创建用户,则需要编辑gsec
并将firebird.conf
放在列表中。
请注意,Firebird .NET提供程序版本5.0.0.0添加了对SRP的支持(无线协议加密)。因此,从Firebird .NET提供程序版本5,您可以使用新的身份验证模型。如上所述,只需确保将有线协议加密(设置为Legacy_UserManager
)从WireCrypt
(默认)降级为Required
。