PushSharp: невозможно записать данные в транспортное соединение
Я использую PushSharp 4.0.10 для отправки push-уведомлений iOS, но недавно я заметил, что консольное приложение, в котором размещается посредник для отправки уведомлений в очередь около 18 000 токенов устройств, вылетает после отправки некоторых уведомлений, получающих это сообщение об ошибке:
[ОШИБКА] APNS-CLIENT[1]: ошибка отправки пакета: идентификатор партии =4, ошибка или =System.IO.IOException: невозможно записать данные в транспортное соединение: существующее соединение было принудительно закрыто удаленным хостом. ---> System.Net.Socke ts.SocketException: существующее соединение было принудительно закрыто удаленным хостом в System.Net.Sockets.Socket.EndSend(IAsyncResult asyncResult) в System.Net.Sockets.NetworkStream.EndWrite(IAsyncResult) AsyncResult)
--- Конец внутренней трассировки стека исключений --- в System.Net.Security._SslStream.EndWrite(IAsyncResult asyncResult)
в System.Net.Security.SslStream.EndWrite(IAsyncResult asyncResult)
в System.IO.Stream.<>c__DisplayClass0.b__17(поток strea m, IAsyncResult asyncResult) в System.Threading.Tasks.TaskFactory1.FromAsyncTrimPromise
1.Complete (TInst ance thisRef, Func3 endMethod, IAsyncResult asyncResult, Boolean requiresSynchr onization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNot ification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
1.FromAsyncTrim [TInstance, TArgs] (Вставьте thisRef, TArgs args, Func
at PushSharp.Apple.ApnsConnection.<SendBatch>d__21.MoveNext() 2016-04-07 12:09:52.PM [ERROR] APNS-Client[1]: Reader Exception: System.IO.IOExc eption: Unable to read data from the transport connection: An established connec tion was aborted by the software in your host machine. ---> System.Net.Sockets.S ocketException: An established connection was aborted by the software in your ho st machine at System.Net.Sockets.Socket.BeginReceive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, AsyncCallback callback, Object state) at System.Net.Sockets.NetworkStream.BeginRead(Byte[] buffer, Int32 offset, In t32 size, AsyncCallback callback, Object state) --- End of inner exception stack trace --- at System.Net.Sockets.NetworkStream.BeginRead(Byte[] buffer, Int32 offset, In t32 size, AsyncCallback callback, Object state) at System.Net.FixedSizeReader.StartReading() at System.Net.Security._SslStream.StartFrameHeader(Byte[] buffer, Int32 offse t, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security._SslStream.StartReading(Byte[] buffer, Int32 offset, I nt32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security._SslStream.ProcessRead(Byte[] buffer, Int32 offset, In t32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security._SslStream.BeginRead(Byte[] buffer, Int32 offset, Int3 2 count, AsyncCallback asyncCallback, Object asyncState) at System.Net.Security.SslStream.BeginRead(Byte[] buffer, Int32 offset, Int32 count, AsyncCallback asyncCallback, Object asyncState) at System.IO.Stream.<>c__DisplayClass0.<BeginEndReadAsync>b__7(Stream stream, ReadWriteParameters args, AsyncCallback callback, Object state) at System.Threading.Tasks.TaskFactory5 beginMethod, Func
3 endMethod) в System.IO.Stream.BeginEndReadAsync(буфер Byte[], смещение Int32, число Int32) в System.IO.Stream.ReadAsync(буфер Byte[], смещение Int32, число Int32, Cance llationToken cancellationToken).IO.Stream.ReadAsync (буфер Byte[], смещение Int32, число Int32)
в PushSharp.Apple.ApnsConnection.d__23.MoveNext() --- Конец трассировки стека из предыдущего местоположения, в котором было сгенерировано исключение --- в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Задача) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNot ification(Задача задачи) в System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Задача задачи)
at PushSharp.Apple.ApnsConnection.d__21.MoveNext() 2016-04-07 12: 09: 59.PM [ОШИБКА] APNS-CLIENT[1]: ошибка отправки пакета: идентификатор пакета =6, ошибка или =System.NullReferenceException: В экземпляре объекта не задана ссылка на объект. в PushSharp.Apple.ApnsConnection.createBatch(List`1 toSend) в PushSharp.Apple.ApnsConnection.d__21.MoveNext()Необработанное исключение: System.NullReferenceException: ссылка на объект не установлена для экземпляра объекта. в PushSharp.Apple.ApnsConnection.d__21.MoveNext() --- Конец трассировки стека из предыдущего расположения, в котором было сгенерировано исключение --- в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNot ification(Задача) в PushSharp.Apple.ApnsConnection.<< - ctor>b__1_0>d.MoveNext() --- Конец трассировки стека из предыдущего местоположения, в котором было сгенерировано исключение --- в System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c__DisplayClass2. b__5(Состояние объекта) в System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(Объектное состояние) в System.Threading.ExecutionContext.RunInternal(ExecutionContext executeCo ntext, обратный вызов ContextCallback, состояние объекта, Boolean PreserveSyncCtionxt.Extain.Extext.text.text.text.text.text.text). executeCo ntext, C обратный вызов ontextCallback, состояние объекта, Boolean (preserveSyncCtx) в System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWor kItem.ExecuteWorkItem() в System.Threading.ThreadPoolWorkbackallWackPackTackPoCaToCaD
Есть идеи, почему это происходит? Это связано с одновременными подключениями? Если да, разве PushSharp не справится с этим сам?