ADO.NET FirebirdSql.Data.FirebirdClient.FbException: "Unable to complete network request to host "
ADO.NET FirebirdSql.Data.FirebirdClient.FbException: "Unable to complete network request to host "
我在尝试将我的 C# 程序连接到现有的 Firebird 服务器时遇到了一个非常奇怪的问题。
首先,这可以通过位于 https://github.com/FirebirdSQL/NETProvider/blob/master/Provider/docs/ado-net.md
的 Firebird 文档中的默认连接示例重现
using (var connection = new FBConnection("database=192.168.0.150:c:\Data\demo.fdb;user=sysdba;password=m@sterkey"))
{
connection.Open();
using (var transaction = connection.BeginTransaction())
{
using (var command = new FbCommand("select * from demo", connection, transaction))
{
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
var values = new object[reader.FieldCount];
reader.GetValues(values);
Console.WriteLine(string.Join("|", values));
}
}
}
}
}
在我的机器上一切正常,我也可以连接到同事 PC 上的 Firebird 服务器。
但是我无法连接到我的其他开发服务器上的 Firebird 服务器。我在另一个问题中找到了答案,想告诉你服务器没有互联网访问权限。
这是我得到的异常:
FirebirdSql.Data.FirebirdClient.FbException: "Unable to complete
network request to host " No message for error code 335544721 found."
IscException: Unable to complete network request to host " No message
for error code 335544721 found. IOException: Unable to read data from
the transport connection: An existing connection was forcibly closed
by the remote host
我已经更新到最新稳定版的Firebird。我可以保证服务器是 运行 并且没有防火墙阻止我的连接,因为当我尝试连接我们的旧 Delphi 程序时,一切正常。我还可以使用来自 Flamerobin.org 的轻量级 Firebird 管理工具 Flamerobin 进行连接,我认为它是用 C++ 编写的。
当我尝试连接 DBeaver 时,我收到以下消息:
[SQLState:28000, ISC error code:335544472] Your user name and
password are not defined. Ask your database administrator to set up a
Firebird login.
我很确定用户名和密码是正确的。我没有使用默认密码,而是使用带有@符号的密码,可能与此有关。
我现在有 2 个可以连接的程序(Delphi 和 C++)和两个不能连接的程序(C# 和 Java)。有没有人知道或调整如何更改我可以连接到服务器的连接?
感谢 Mark Rotteveel 的评论让我找到了解决方案。
我可以使用默认密码“masterkey”进行连接,因此很明显 srp 用户是使用默认凭据创建的,因此无法与其他凭据建立连接。
我必须更正旧服务器中的用户。
感谢提示 ADO.NET 只支持 srp.
我在尝试将我的 C# 程序连接到现有的 Firebird 服务器时遇到了一个非常奇怪的问题。
首先,这可以通过位于 https://github.com/FirebirdSQL/NETProvider/blob/master/Provider/docs/ado-net.md
的 Firebird 文档中的默认连接示例重现using (var connection = new FBConnection("database=192.168.0.150:c:\Data\demo.fdb;user=sysdba;password=m@sterkey"))
{
connection.Open();
using (var transaction = connection.BeginTransaction())
{
using (var command = new FbCommand("select * from demo", connection, transaction))
{
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
var values = new object[reader.FieldCount];
reader.GetValues(values);
Console.WriteLine(string.Join("|", values));
}
}
}
}
}
在我的机器上一切正常,我也可以连接到同事 PC 上的 Firebird 服务器。
但是我无法连接到我的其他开发服务器上的 Firebird 服务器。我在另一个问题中找到了答案,想告诉你服务器没有互联网访问权限。
这是我得到的异常:
FirebirdSql.Data.FirebirdClient.FbException: "Unable to complete network request to host " No message for error code 335544721 found."
IscException: Unable to complete network request to host " No message for error code 335544721 found. IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host
我已经更新到最新稳定版的Firebird。我可以保证服务器是 运行 并且没有防火墙阻止我的连接,因为当我尝试连接我们的旧 Delphi 程序时,一切正常。我还可以使用来自 Flamerobin.org 的轻量级 Firebird 管理工具 Flamerobin 进行连接,我认为它是用 C++ 编写的。
当我尝试连接 DBeaver 时,我收到以下消息:
[SQLState:28000, ISC error code:335544472] Your user name and password are not defined. Ask your database administrator to set up a Firebird login.
我很确定用户名和密码是正确的。我没有使用默认密码,而是使用带有@符号的密码,可能与此有关。
我现在有 2 个可以连接的程序(Delphi 和 C++)和两个不能连接的程序(C# 和 Java)。有没有人知道或调整如何更改我可以连接到服务器的连接?
感谢 Mark Rotteveel 的评论让我找到了解决方案。
我可以使用默认密码“masterkey”进行连接,因此很明显 srp 用户是使用默认凭据创建的,因此无法与其他凭据建立连接。
我必须更正旧服务器中的用户。 感谢提示 ADO.NET 只支持 srp.