我在尝试建立与我在ASP.NET Core MVC 3.1中使用Windows Server 2019设置的服务器的连接时遇到问题。
我在服务器上安装的唯一东西是MySQL套件和IIS。该服务器也使用VirtualBox托管在本地计算机上,并使用桥接适配器进行设置。
使用Visual Studio中的默认MVC选项创建了ASP.NET Core MVC项目。这里没有第三方服务。
在ASP.NET Core中,连接字符串如下所示:
"ConnectionStrings": {
"ApplicationContext": "Server=<server IP/host name>;Initial Catalog=testdatabase;User ID=testuser;Password=testpassword;"
}
使用上面的连接字符串运行项目时,我的浏览器中出现以下错误:
Win32Exception:系统找不到指定的文件。位置不明
SqlException:建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称正确,并且已将SQL Server配置为允许远程连接。(提供者:TCP提供程序,错误:0-连接尝试失败,因为一段时间后连接方未正确响应,或者由于连接主机未能响应而建立连接失败。)Microsoft.Data.ProviderBase.DbConnectionPool.TryGetConnection (DbConnection owningObject,uint waitForMultipleObjectsTimeout,bool allowCreate,bool onlyOneCheckConnection,DbConnectionOptions userOptions,DbConnectionInternal连接)
但是,我无法为自己的生活弄清楚为什么这行不通。我已经看了很多互联网,但是对ASP.NET与MySQL服务器的交互方式以及是否使用了错误的参数却不甚了解。我尝试使用其他参数,例如,Trusted_Connection=True/False;
并MultipleActiveResultSets=True/False;
希望产生任何不同的结果,但仍然没有效果(我特别提到了这两个,因为它们默认出现)。
为了测试服务器是否是罪魁祸首,我使用带有PDO的PHP v7复制了上面的连接字符串。
<?php
$server = "<server IP/host name>";
$port = 3306;
$db = "testdatabase";
$username = "testuser";
$password = "testpassword";
try {
$conn = new PDO("mysql:host=$server;port=$port;dbname=$db", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected";
} catch (PDOException $err) {
echo $err;
}
if ($conn) {
$query = "SELECT * FROM testTable";
$result = $conn->query($query);
} else {
echo "Query failed";
}
foreach ($entity as $result) {
echo "<br />" . $result["Id"];
}
?>
我可以确认此PHP代码可以100%运行。
此外,我还测试了使用Azure MySQL以及使用Azure中创建的生成的连接字符串建立服务器连接的过程。这也可以100%使用。
这使我相信我的Windows Server是罪魁祸首,它可能与被禁用/阻止的一项或多项特定服务有关。但是同时,如果PHP代码可以建立连接并获取数据,那么肯定不是由Connection String代码引起的吗?
我认为问题可能与我的Controller代码中的逻辑有关。
如果有人能提供一些见识,我将不胜感激。这可能只是超级简单的东西。
由于获得SqlException
,您必须尝试使用System.Data.SqlClient
或连接(到MySQL Server)Microsoft.Data.SqlClient
。不支持 这些仅适用于Microsoft SQL Server。
安装MySqlConnector并使用MySqlConnection
该类建立连接。有关完整的连接字符串参考,请参见https://mysqlconnector.net/connection-options/,但最简单的连接字符串为"Server=<server IP/host name>;Database=testdatabase;User ID=testuser;Password=testpassword;"
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句