title: How do I prevent this IIS error that required a manual restart of the app pool from occurring again?
body: <p>My website hosted in IIS became inaccessible. In the event log on the server, I saw this error:</p>
  
  <pre><code>Event code: 3005 
  Event message: An unhandled exception has occurred. 
  Event time: 01/01/2018 00:00:00 AM 
  Event time (UTC): 01/02/2018 6:00:00 AM 
  Event ID: 64b4d6533abd4e71b3ba30b9008d7d86 
  Event sequence: 1921230 
  Event occurrence: 1 
  Event detail code: 0 
  
  Application information: 
      Application domain: /LM/W3SVC/2/ROOT-1-131865989552967444 
      Trust level: Full 
      Application Virtual Path: / 
      Application Path: C:\inetpub\wwwroot\MyWebsite\ 
      Machine name: MyWebServer
  
  Process information: 
      Process ID: 3388 
      Process name: w3wp.exe 
      Account name: NT AUTHORITY\SYSTEM 
  
  Exception information: 
      Exception type: HttpException 
      Exception message: The remote host closed the connection. The error code is 0x80070057.
     at System.Web.Hosting.IIS7WorkerRequest.RaiseCommunicationError(Int32 result, Boolean throwOnDisconnect)
     at System.Web.Hosting.IIS7WorkerRequest.ExplicitFlush()
     at System.Web.WebSocketPipeline.DoFlush()
  --- End of stack trace from previous location where exception was thrown ---
     at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
     at System.Web.WebSocketPipeline.&lt;ProcessRequestImplAsync&gt;d__9.MoveNext()
  
  
  
  Request information: 
      Request URL:  
      Request path:  
      User host address:  
      User:  
      Is authenticated: False 
      Authentication Type:  
      Thread account name: NT AUTHORITY\SYSTEM 
  
  Thread information: 
      Thread ID: 112 
      Thread account name: NT AUTHORITY\SYSTEM 
      Is impersonating: False 
      Stack trace:    at System.Web.Hosting.IIS7WorkerRequest.RaiseCommunicationError(Int32 result, Boolean throwOnDisconnect)
     at System.Web.Hosting.IIS7WorkerRequest.ExplicitFlush()
     at System.Web.WebSocketPipeline.DoFlush()
  --- End of stack trace from previous location where exception was thrown ---
     at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
     at System.Web.WebSocketPipeline.&lt;ProcessRequestImplAsync&gt;d__9.MoveNext()
  
  
  Custom event details: 
  </code></pre>
  
  <p>Restarting only the website caused the error to be logged again, but with a different code (0x800704CD instead of 0x80070057). The website was still inaccessible. Restarting the app pool resolved the issue.</p>
  
  <p>What is this error, and how can I stop it from happening again?</p>
  
  <p>Googling both error codes yields results from people who were encountering the error intermittently (<a href="https://stackoverflow.com/q/3518152/3224483">post1</a>, <a href="https://stackoverflow.com/q/5564862/3224483">post2</a>). The difference is that their websites don't appear to be brought down by this error, and they are seeing the error intermittently. I saw it twice, and had to manually intervene just to get the website running again.</p>