堆栈跟踪详细信息:
System.Web.HttpUnhandledException (0x80004005): Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> System.AggregateException: One or more errors occurred. ---> System.IO.IOException: Received an unexpected EOF or 0 bytes from the transport stream.
at System.Net.FixedSizeReader.ReadPacket(Byte[] buffer, Int32 offset, Int32 count)
at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult)
at MySql.Data.MySqlClient.NativeDriver.StartSSL()
at MySql.Data.MySqlClient.NativeDriver.Open()
at MySql.Data.MySqlClient.Driver.Open()
at MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder settings)
at MySql.Data.MySqlClient.MySqlPool.GetPooledConnection()
at MySql.Data.MySqlClient.MySqlPool.TryToGetDriver()
at MySql.Data.MySqlClient.MySqlPool.GetConnection()
at MySql.Data.MySqlClient.MySqlConnection.Open()
at WebAppClassLibrary.MySqlShell.ExecuteScalar(String query, MySqlConnection mySqlConnection, MySqlParameter[] mySqlParameters) in N:\webApp\WebAppClassLibrary\MySqlShell.cs:line 147
at WebAppClassLibrary.ServiceOperations.GetServiceType(Int32 login) in N:\webApp\WebAppClassLibrary\ServiceOperations.cs:line 57
at WebAppClassLibrary.PartnerDetailLibrary.GetAccountData(PartnerDetailAccount partnerDetailAccount, MySqlConnection mtInstaConnection, MySqlConnection secureConnection, MySqlParameter paramStartTime, MySqlParameter paramEndTime, Dictionary`2 lastActivity, Dictionary`2 balances, Boolean exactPeriod, Boolean allowProfit, Boolean allowEquity, Boolean allowAdditionalPercentFor, Boolean usingCache, Boolean IsCryptoOnly, Double minCommission, Boolean showAgent) in N:\webApp\WebAppClassLibrary\PartnerDetailLibrary.cs:line 40
at PartnerDetail.<>c_DisplayClass118_0.<FillDataGridByClients>b_1(Int32 i) in N:\webApp\WebApp\PartnerDetail.aspx.cs:line 0
at System.Threading.Tasks.Parallel.<>c_DisplayClass17_0`1.<ForWorker>b_1()
at System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
at System.Threading.Tasks.Task.<>c_DisplayClass176_0.<ExecuteSelfReplicating>b_0(Object )
— End of inner exception stack trace —
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at System.Threading.Tasks.Parallel.ForWorker[TLocal](Int32 fromInclusive, Int32 toExclusive, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Func`4 bodyWithLocal, Func`1 localInit, Action`1 localFinally)
at System.Threading.Tasks.Parallel.For(Int32 fromInclusive, Int32 toExclusive, ParallelOptions parallelOptions, Action`1 body)
at PartnerDetail.FillDataGridByClients(Int32 from, Int32 to) in N:\webApp\WebApp\PartnerDetail.aspx.cs:line 1129
at PartnerDetail.BtnSearchClick(Object sender, EventArgs e) in N:\webApp\WebApp\PartnerDetail.aspx.cs:line 566
at System.Web.UI.WebControls.Button.OnClick(EventArgs e)
at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
---> (Inner Exception #0) System.IO.IOException: Received an unexpected EOF or 0 bytes from the transport stream.
at System.Net.FixedSizeReader.ReadPacket(Byte[] buffer, Int32 offset, Int32 count)
at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult)
at MySql.Data.MySqlClient.NativeDriver.StartSSL()
at MySql.Data.MySqlClient.NativeDriver.Open()
at MySql.Data.MySqlClient.Driver.Open()
at MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder settings)
at MySql.Data.MySqlClient.MySqlPool.GetPooledConnection()
at MySql.Data.MySqlClient.MySqlPool.TryToGetDriver()
at MySql.Data.MySqlClient.MySqlPool.GetConnection()
at MySql.Data.MySqlClient.MySqlConnection.Open()
at WebAppClassLibrary.MySqlShell.ExecuteScalar(String query, MySqlConnection mySqlConnection, MySqlParameter[] mySqlParameters) in N:\webApp\WebAppClassLibrary\MySqlShell.cs:line 147
at WebAppClassLibrary.ServiceOperations.GetServiceType(Int32 login) in N:\webApp\WebAppClassLibrary\ServiceOperations.cs:line 57
at WebAppClassLibrary.PartnerDetailLibrary.GetAccountData(PartnerDetailAccount partnerDetailAccount, MySqlConnection mtInstaConnection, MySqlConnection secureConnection, MySqlParameter paramStartTime, MySqlParameter paramEndTime, Dictionary`2 lastActivity, Dictionary`2 balances, Boolean exactPeriod, Boolean allowProfit, Boolean allowEquity, Boolean allowAdditionalPercentFor, Boolean usingCache, Boolean IsCryptoOnly, Double minCommission, Boolean showAgent) in N:\webApp\WebAppClassLibrary\PartnerDetailLibrary.cs:line 40
at PartnerDetail.<>c_DisplayClass118_0.<FillDataGridByClients>b_1(Int32 i) in N:\webApp\WebApp\PartnerDetail.aspx.cs:line 0
at System.Threading.Tasks.Parallel.<>c_DisplayClass17_0`1.<ForWorker>b_1()
at System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
at System.Threading.Tasks.Task.<>c_DisplayClass176_0.<ExecuteSelfReplicating>b_0(Object )<---
at System.Web.UI.Page.HandleError(Exception e)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest()
at System.Web.UI.Page.ProcessRequest(HttpContext context)
at ASP.agentsdetalization_aspx.ProcessRequest(HttpContext context) in c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\79e9f1d9\6267efd7\App_Web_fixgkyq0.4.cs:line 0
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step)
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
我收到此后端异常,但肯定在每 1000 个请求中大约出现 1 或 2 次。尽管我试图通过不同的方式来解决这个问题,但除了进退两难之外,找不到任何解决方案。
我经历了this question类似于我的异常,但目前还没有解决方案。我还找到了this question ,但现在陷入两难境地,我的异常(exception)的解决方案是什么。我试着在方法 Global.asax.cs/Application_BeginRequest() 中写下这行代码:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
注意:我的应用程序的目标 .NET 框架 版本是 4.7,我必须在我的应用程序代码中修复这个异常。我无权在服务器上工作。所以,请帮助我,如果我是在正确的方式与否。另外,请确保这行代码是否与我的异常相关。如果这是正确的,我应该在上面的代码行中使用按位速记运算符“|=”代替“=”吗?
提前致谢。
更新: 完整的堆栈跟踪和异常详细信息添加在代码块的底部,因为有些人要求帮助理解。 请注意,james-mead的答案还行不通。我想请专家提供更多答案以摆脱此异常。我真的被困在这一点上。
最佳答案
改变:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
收件人:
ServicePointManager.SecurityProtocol = (SecurityProtocolType)12288
| (SecurityProtocolType)3072
| (SecurityProtocolType)768;
| SecurityProtocolType.Tls;
显然,您需要在发出第一个 HTTP 请求之前运行此代码。为确保使用最新的 TLS 版本,您需要 try catch 它。像这样:
try {
ServicePointManager.SecurityProtocol = (SecurityProtocolType) 12288
| (SecurityProtocolType) 3072
| (SecurityProtocolType) 768
| SecurityProtocolType.Tls;
} catch (NotSupportedException) {
try {
ServicePointManager.SecurityProtocol = (SecurityProtocolType) 3072
| (SecurityProtocolType) 768
| SecurityProtocolType.Tls;
} catch (NotSupportedException) {
try {
ServicePointManager.SecurityProtocol = (SecurityProtocolType) 768
| SecurityProtocolType.Tls;
} catch (NotSupportedException) {
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
}
}
}
关于asp.net - 为什么这个后端异常发生在 MySql.Data.MySqlClient.MySqlConnection.Open() 中的 "System.IO.IOException"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62841978/