Welcome to the Inedo Forums! Check out the Forums Guide for help getting started.
If you are experiencing any issues with the forum software, please visit the Contact Form on our website and let us know!
ProGet Web Server crashing
-
Hi!
We've been running ProGet in our company for about a month, and from time to time it crashes. There are two services ProGet Service and ProGet Web Server.
The crash occurs on the Web Server and it stops.We're considering to upgrade to a paid version provided that the software is stable.
The machine hosting it runs on Windows Server 2016
Below are the exceptions extracted from the event log on that machine:Application: ProGet.Service.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.Net.ProtocolViolationException
at System.Net.HttpResponseStream.Write(Byte[], Int32, Int32)
at Inedo.Web.Server.AspWorkerRequest.SendResponseFromMemory(Byte[], Int32)
at System.Web.HttpRuntime.ProcessRequestInternal(System.Web.HttpWorkerRequest)
at System.Web.HttpRuntime.ProcessRequestNoDemand(System.Web.HttpWorkerRequest)
at System.Web.HttpRuntime.ProcessRequest(System.Web.HttpWorkerRequest)
at Inedo.Web.Server.HttpListenerHost.ProcessRequestAsync(System.IAsyncResult)
at System.Net.LazyAsyncResult.Complete(IntPtr)
at System.Net.LazyAsyncResult.ProtectedInvokeCallback(System.Object, IntPtr)
at System.Net.ListenerAsyncResult.IOCompleted(System.Net.ListenerAsyncResult, UInt32, UInt32)
at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32, UInt32, System.Threading.NativeOverlapped*)Exception: System.Net.ProtocolViolationException
Message: Bytes to be written to the stream exceed the Content-Length bytes size specified.
StackTrace: at System.Net.HttpResponseStream.Write(Byte[] buffer, Int32 offset, Int32 size)
at Inedo.Web.Server.AspWorkerRequest.SendResponseFromMemory(Byte[] data, Int32 length)
at System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr)
at System.Web.HttpRuntime.ProcessRequestNoDemand(HttpWorkerRequest wr)
at System.Web.HttpRuntime.ProcessRequest(HttpWorkerRequest wr)
at Inedo.Web.Server.HttpListenerHost.ProcessRequestAsync(IAsyncResult result)
at System.Net.LazyAsyncResult.Complete(IntPtr userToken)
at System.Net.LazyAsyncResult.ProtectedInvokeCallback(Object result, IntPtr userToken)
at System.Net.ListenerAsyncResult.IOCompleted(ListenerAsyncResult asyncResult, UInt32 errorCode, UInt32 numBytes)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)Product: ProGet
Version: 5.1.8
-
The error message is coming from within the network stack inside of ASP.NET's hosting components, and errors like this tend to indicate problematic underlying infrastructure, such as drivers, hardware/memory. They are often quite rare and not reproducible, and thus can be difficult to diagnose or debug.
The Integrated Web Server was not designed to handle problematic infrastructure, and as such will simply crash when receiving certain "impossible" scenarios from the network stack. Certain errors are not safe to try/catch (because they imply a corrupt process memory state), which is why they are done.
If you are finding "service autorecovery" not enough, then you should switch to IIS hosting. IIS is very robust, and uses a worker process model and can handle a lot of these underlying problems. When a worker process crashes (which it will do in the same scenario -- unsafe exceptions), IIS will spin up a new one almost instantly.
-
Hi Alana!
Thanks for your response.
You mention "service autorecovery", is this provided as a software "feature", or should it be set up by us?
-
This is a property of the service.
Just go to "Services" on your computer, edit the service, and change the Auto-recorvery options.