A few of my users are recieving this error after a while:
System.Net.HttpListenerException (0x80004005): The I/O operation has been aborted because of either a thread exit or an application request
I use ServiceStack version 5.10.2
I am not able to reproduce this error but I found out some points:
- The error only occurs with “AppSelfHostBase” and not with “AppHostHttpListenerBase”.
- The error occurs mostly after a couple of hours or at the next morning and in addition there is evidence that this problem is related to the backup tool Arcronis. I checked a few installations and all of them uses Arcronis and the error times fits to the “after backup” times.
- After recieving that error for the first time, the service ends up in a state, where this erros occurs very often.
- Restarting the selfhosted service solves this problem (for a couple of hours or to next morning).
- If the service is in this kind of “error state”, the request “/swagger-ui/” is only partial rendered. (Chrome console shows this error: GET https:/localhost:25851/swagger-ui/swagger-ui.js net::ERR_HTTP2_PROTOCOL_ERROR 200)
- Nothing to see in “httperr.log” (only “Timer_ConnectionIdle” entrys).
Any ideas?
Two call stack examples:
bei System.Net.HttpResponseStream.EndWrite(IAsyncResult asyncResult)
bei System.IO.Stream.<>c.b__53_1(Stream stream, IAsyncResult asyncResult)
bei System.Threading.Tasks.TaskFactory1.FromAsyncTrimPromise
1.Complete(TInstance thisRef, Func`3 endMethod, IAsyncResult asyncResult, Boolean requiresSynchronization)
— Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde —
bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bei ServiceStack.Text.DefaultMemory.d__34.MoveNext()
— Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde —
bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bei ServiceStack.Metadata.BaseSoapMetadataHandler.d__5.MoveNext()
bei System.Net.HttpRequestStream.EndRead(IAsyncResult asyncResult)
bei System.IO.Stream.<>c.b__43_1(Stream stream, IAsyncResult asyncResult)
bei System.Threading.Tasks.TaskFactory1.FromAsyncTrimPromise
1.Complete(TInstance thisRef, Func`3 endMethod, IAsyncResult asyncResult, Boolean requiresSynchronization)
— Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde —
bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bei System.IO.Stream.d__27.MoveNext()
— Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde —
bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bei ServiceStack.StreamExtensions.d__50.MoveNext()
— Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde —
bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bei ServiceStack.Text.DefaultMemory.d__38.MoveNext()
— Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde —
bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bei ServiceStack.Host.RestHandler.d__16.MoveNext()
— Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde —
bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bei ServiceStack.Host.RestHandler.d__15.MoveNext()
— Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde —
bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
bei ServiceStack.Host.RestHandler.d__14.MoveNext()