尝试从 gitpod IDE(ubuntu 服务器)连接到 MySql 数据库时出现套接字异常
Socket Exceptions when trying to connect to MySql database from gitpod IDE (ubuntu server)
我正在使用 gitpod 在线 IDE(与浏览器中的代码相比,其背后有一个 ubuntu linux 服务器)。
我正在努力在另一台 linux (CentOS) 服务器上创建与我的 mysql 数据库的连接。我已将数据库服务器上的远程 MySql 主机设置为 '%' => 'all allowed'.
我正在使用 MySql 连接器包:https://www.nuget.org/packages/MySqlConnector 来连接它。
这就是我的代码的样子:
public async Task<List<User>> GetUsersAsync()
{
List<User> readUsers = new List<User>();
string connection = "server=myserverip;database=db;user=user;password=pwd";
using (MySqlConnection con = new MySqlConnection(connection))
{
MySqlCommand cmd = new MySqlCommand("SELECT * FROM admin", con);
cmd.CommandType = CommandType.Text;
con.Open();
MySqlDataReader rdr = cmd.ExecuteReader();
while(rdr.Read())
{
User user = new User();
user.ID = Convert.ToInt32(rdr["ID"]);
user.Username = rdr["Username"].ToString();
user.Password = rdr["Password"].ToString();
readUsers.Add(user);
}
}
return readUsers;
}
当然,连接字符串还有其他值而不是上面显示的值(出于安全原因)。
我收到以下错误,我只是不知道如何解决它们或问题到底是什么:
我不确定如何继续或现在尝试什么。
从调用堆栈来看,您似乎正在使用 Blazor 将代码编译为 wasm。此代码在浏览器中 运行 并受浏览器沙箱的所有限制。更具体地说,浏览器无法打开 TCP 套接字进行网络通信。
更多背景信息是 here:
Blazor is running in the browser sandbox and cannot do more than javascript can network wise. So technically this is not possible.
和here:
TCP networking APIs that can't ever work in the browser, since JavaScript doesn't expose raw TCP networking capabilities. This naturally leads to a runtime failure from somewhere low in the stack.
这就是您获得 PlatformNotSupportedException
.
的原因
要解决此问题,您需要重新构建代码,以便 MySQL 连接是从 Web 服务器上的代码 运行 建立的,并且 Blazor 代码发出 HTTP 请求(到web API) 来调用执行数据库操作的服务器端代码。
我正在使用 gitpod 在线 IDE(与浏览器中的代码相比,其背后有一个 ubuntu linux 服务器)。 我正在努力在另一台 linux (CentOS) 服务器上创建与我的 mysql 数据库的连接。我已将数据库服务器上的远程 MySql 主机设置为 '%' => 'all allowed'.
我正在使用 MySql 连接器包:https://www.nuget.org/packages/MySqlConnector 来连接它。 这就是我的代码的样子:
public async Task<List<User>> GetUsersAsync()
{
List<User> readUsers = new List<User>();
string connection = "server=myserverip;database=db;user=user;password=pwd";
using (MySqlConnection con = new MySqlConnection(connection))
{
MySqlCommand cmd = new MySqlCommand("SELECT * FROM admin", con);
cmd.CommandType = CommandType.Text;
con.Open();
MySqlDataReader rdr = cmd.ExecuteReader();
while(rdr.Read())
{
User user = new User();
user.ID = Convert.ToInt32(rdr["ID"]);
user.Username = rdr["Username"].ToString();
user.Password = rdr["Password"].ToString();
readUsers.Add(user);
}
}
return readUsers;
}
当然,连接字符串还有其他值而不是上面显示的值(出于安全原因)。 我收到以下错误,我只是不知道如何解决它们或问题到底是什么:
我不确定如何继续或现在尝试什么。
从调用堆栈来看,您似乎正在使用 Blazor 将代码编译为 wasm。此代码在浏览器中 运行 并受浏览器沙箱的所有限制。更具体地说,浏览器无法打开 TCP 套接字进行网络通信。
更多背景信息是 here:
Blazor is running in the browser sandbox and cannot do more than javascript can network wise. So technically this is not possible.
和here:
TCP networking APIs that can't ever work in the browser, since JavaScript doesn't expose raw TCP networking capabilities. This naturally leads to a runtime failure from somewhere low in the stack.
这就是您获得 PlatformNotSupportedException
.
要解决此问题,您需要重新构建代码,以便 MySQL 连接是从 Web 服务器上的代码 运行 建立的,并且 Blazor 代码发出 HTTP 请求(到web API) 来调用执行数据库操作的服务器端代码。