我尝试使用InterServer连接到C# ASP.NET MVC托管在Plesk上的SQL数据库。尽管做了很多努力,但它似乎从来不想联系。我做错了什么?
我已经多次尝试更改连接字符串。Plesk和InterServer支持要求我部署代码并通过本地主机访问数据库。因此,我尝试了以下连接字符串:
"SERVER=localhost;DATABASE=databasename;UID=username;PASSWORD=password;"
"SERVER=localhost:3306;DATABASE=databasename;UID=username;PASSWORD=password;"
"SERVER=localhost;PORT=3306;DATABASE=databasename;UID=username;PASSWORD=password;"
"SERVER=(Local);DATABASE=databasename;UID=username;PASSWORD=password;"我尝试过将"Server“与"Data”互换,以及其他关键字更改。我还尝试将Trusted_Connection设置为true和false,将Integrated设置为true和false。当我试图将它们设置为true时,应用程序尝试使用我的Plesk用户名登录,而不是使用在连接字符串中指定的用户ID登录。此用户与数据库没有关联,我也无法将其关联到Plesk控制面板中。
我还尝试使用Plesk中的默认连接字符串,以及对所述连接字符串的几个修改,其中一个甚至由InterServer支持提供,因为他们怀疑错误在我的连接字符串中。下面是这些字符串:
"data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
"Data Source=(IPAddressWasHere)\MSSQLSERVER2017;Initial Catalog=nlstatic;Persist Security Info=True;User ID=username;Password=password"
"Data Source=.\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\db.mdf;Initial Catalog=Portal.Web;Integrated Security=True"
"Data Source=.\SQLExpress;Initial Catalog=localhost;Integrated Security=True"我也尝试过将proverName从System.Data.SqlClient更改为MySql.Data.SqlClient,但这似乎并没有改变错误消息。就我个人而言,我怀疑这个问题不是与连接字符串设置有关,而是与MySQL数据库或其设置的配置有关。
尽管他们试图在这方面寻求InterServer的支持,但他们拒绝调查此事。相反,他们曾经要求我“正确地设置我的VPS”(我根本没有VPS ),并试图说服我试图通过ODBC连接,当我清楚地声明它是通过连接字符串时。
如果这与此相关,下面是关于我如何使用连接字符串的C#代码,尽管我不认为这是我个人的原因:
public List<string> GetEffectByID(int id)
{
List<string> results = new List<string>();
SqlConnection conn;
string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
conn = new SqlConnection(connectionString);
try
{
using (SqlCommand command = new SqlCommand("getFxById", conn) { CommandType = CommandType.StoredProcedure })
{
conn.Open();
using (SqlDataReader dr = command.ExecuteReader())
{
while (dr.Read())
{
results.Add(dr["myColumn"].ToString());
}
}
conn.Close();
return results;
}
} catch(Exception e)
{
if(conn.State == ConnectionState.Open) conn.Close();
return new List<string>() { e.ToString() };
}
}此存储过程肯定存在于我的数据库中,并且在phpMyAdmin中工作。
在整个过程中,有什么是我错过的吗?当我的视图调用函数时,我希望它能够连接并运行存储过程。尽管如此,使用Plesk/InterServer提供的方法,它仍然声称没有找到/访问服务器。当我尝试使用我创建的连接字符串(不使用Integrated )时,它提供了以下错误消息:
System.Data.SqlClient.SqlException (0x80131904):用户“Shizuku”登录失败。在System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity标识处,SqlConnectionString connectionOptions、SqlCredential凭据、对象providerInfo、字符串newPassword、SecureString newSecurePassword、布尔值、SqlConnectionString userConnectionOptions、SessionData reconnectSessionData、DbConnectionPool池、String reconnectSessionData、布尔值、en36)在System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions选项处,en22#,对象,池,,)在池,en30#,选项,en33#,)在en3#,en38,( System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject,DbConnectionOptions userOptions,DbConnectionInternal oldConnection )在System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject,UInt32 waitForMultipleObjectsTimeout,Boolean,Boolean onlyOneCheckConnection,DbConnectionOptions userOptions,DbConnectionInternal ),DbConnectionInternal #en3 20#1重试,en22#,#,DbConnectionOptions )(#,,#1重试,,DbConnectionOptions)( System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource
1 retry) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource1重试) at System.Data.SqlClient.SqlConnection.Open() at (代码文件在这里) ClientConnectionId:953f6859-a48b-4f58-a0b8-bef0702911a3错误号:18456,状态:1,类:14
我觉得这个错误意味着我现在离解决这个问题更近了,但我并不完全确定。有什么是我没有尝试过的,或者是我犯了什么错误,只是我错过了?
发布于 2019-05-29 17:26:28
我发现了错误:我的主机InterServer拒绝连接,声称"localhost连接是远程连接“。经过几个小时的来回支持,我终于要求退款。
在此之后,支持代理终于开始拼命地让它工作,通过更改我的Web.config来匆忙地寻找解决方案,因为他确信这是我的问题,而不是他的问题。但没有结果,他做了一个测试域,复制了我的文件/数据库。当然,他没有我的C#代码,这导致了对象创建语句(使用新关键字)的“对象未设置为引用”错误。最后,他创建了一个PHP文件,该文件字面上写着“连接成功”,里面没有实际的代码,然后给我发了一个链接,声称“错误不在服务器端,明白吗?”
解决我的问题的方法是不从InterServer购买共享主机,甚至可能不使用整个InterServer。他们的支持是可怕的,他们采用了这种阴暗面的策略,让客户在30天的退货期后进行故障排除。买家要小心。
https://stackoverflow.com/questions/56330115
复制相似问题