We have an application gateway configured in front of our web application on an Azure VM. We've been seeing regular ECONNRESET exceptions occurring that appear to be generated as a result of the default health probe. I can see every 30 seconds a couple of requests to 127.0.0.1. On a fairly regular basis (more than 20 instances in the last 24 hours) one of those requests results in a ECONNRESET exception per the output below:
17:10:35 [Information] () "Request starting HTTP/1.1 GET http://127.0.0.1/ " 17:10:35 [Information] () {"Connection":["Keep-Alive"],"Host":["127.0.0.1"],"Max-Forwards":["10"]} 17:10:35 [Information] () Executing action method "HonestyBoxWeb.Controllers.HomeController.Index (HonestyBoxWeb)" with arguments (null) - ModelState is Valid 17:10:35 [Information] () Executing ViewResult, running view at path "/Views/Home/Index.cshtml". 17:10:35 [Information] () Executed action "HonestyBoxWeb.Controllers.HomeController.Index (HonestyBoxWeb)" in 2.8666ms 17:10:35 [Information] () "Request finished in 5.2758ms 200 text/html; charset=utf-8" 17:10:35 [Information] () Connection id ""0HLCE7PIFCIGH"" request processing ended abnormally. System.IO.IOException: Error -104 ECONNRESET connection reset by peer ---> Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.Internal.Networking.UvException: Error -104 ECONNRESET connection reset by peer at Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.Internal.LibuvOutputConsumer.<WriteOutputAsync>d__6.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.Internal.LibuvConnection.<Start>d__26.MoveNext() --- End of inner exception stack trace --- at Microsoft.AspNetCore.Server.Kestrel.Internal.System.IO.Pipelines.PipeCompletion.ThrowFailed() at Microsoft.AspNetCore.Server.Kestrel.Internal.System.IO.Pipelines.Pipe.GetResult(ReadResult& result) at Microsoft.AspNetCore.Server.Kestrel.Internal.System.IO.Pipelines.Pipe.Microsoft.AspNetCore.Server.Kestrel.Internal.System.IO.Pipelines.IReadableBufferAwaiter.GetResult() at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Frame`1.<ProcessRequestsAsync>d__2.MoveNext() So it looks like the healthcheck is posting a request and then resetting the connection. Am I interpreting that correctly and is there some way to resolve this?