mysql数据更新报错 你的主机中的软件中止了一个已建立的连接¥SSPI调用失败
下面是我在做服务器发布程序时,mysql数据报出的错误,本机运行相关程序逻辑没有问题,发布到服务器上就报错,开始查找各种资料,调查终于发现问题了,供大家参考
问题描述1
MySql.Data.MySqlClient.MySqlException (0x80004005): Authentication to host ‘localhost’ for user ‘root’ using method ‘caching_sha2_password’ failed with message: Reading from the stream has failed. —> MySql.Data.MySqlClient.MySqlException (0x80004005): Reading from the stream has failed. —> System.IO.IOException: 无法从传输连接中读取数据: 你的主机中的软件中止了一个已建立的连接。。 —> System.Net.Sockets.SocketException: 你的主机中的软件中止了一个已建立的连接。
在 System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
在 System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
— 内部异常堆栈跟踪的结尾 —
在 System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
在 System.Net.FixedSizeReader.ReadPacket(Byte[] buffer, Int32 offset, Int32 count)
在 System.Net.Security._SslStream.StartFrameHeader(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
在 System.Net.Security._SslStream.StartReading(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
在 System.Net.Security._SslStream.ProcessRead(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
在 System.Net.Security.SslStream.Read(Byte[] buffer, Int32 offset, Int32 count)
在 MySql.Data.MySqlClient.TimedStream.Read(Byte[] buffer, Int32 offset, Int32 count)
在 MySql.Data.MySqlClient.MySqlStream.ReadFully(Stream stream, Byte[] buffer, Int32 offset, Int32 count)
在 MySql.Data.MySqlClient.MySqlStream.LoadPacket()
在 MySql.Data.MySqlClient.MySqlStream.LoadPacket()
在 MySql.Data.MySqlClient.MySqlStream.ReadPacket()
在 MySql.Data.MySqlClient.Authentication.MySqlAuthenticationPlugin.ReadPacket()
在 PlantCommon.MySQLHelper.ExecuteSqlNoQuery(String SQL)
在 PlantCommon.DBClass.ExecuteSqlNoQuery(String SQL)
在 PlantCommon.LogHelper.WriteDBLog(String strStateType, String strProcessType, String strDateTime, String strContent)
问题描述2
System.Security.Authentication.AuthenticationException: 调用 SSPI 失败,请参见内部异常。 —> System.ComponentModel.Win32Exception: 为验证提供的消息或签名已被更改
— 内部异常堆栈跟踪的结尾 —
在 PlantCommon.MySQLHelper.ExecuteSqlNoQuery(String SQL)
在 PlantCommon.DBClass.ExecuteSqlNoQuery(String SQL)
在 PlantCommon.LogHelper.WriteDBLog(String strStateType, String strProcessType, String strDateTime, String strContent)
以上两类问题都会和下面的配置有关,只要在配置文件中追加如下内容,问题迎刃而解
配置文件(web.config)
*所有的数据库连接串追加配置:*SslMode=None;