El grupo de aplicaciones IIS no puede reciclarse cuando hay un Websocket ASP.NET 4.5 abierto

Me he encontrado con un problema que se puede replicar de la siguiente manera (necesita IIS8, por lo que debe estar en Windows 8+ o Windows Server 2012 R2 +):

Cree un nuevo sitio web en el Administrador IIS, diga TestWs en el puerto 8881, señale una nueva carpeta, diga C: \ temp \ testws y agregue el siguiente archivo Web.config allí

<?xml version="1.0"?>
<configuration>
  <system.web>
    <compilation targetFramework="4.5"/>
    <httpRuntime targetFramework="4.5"/>
  </system.web>
</configuration>

Ahora agregue el siguiente archivo WsHandler.ashx en la misma carpeta

<%@ WebHandler Language="C#" Class="WsHandler" %>

using System;
using System.Threading;
using System.Web;

public class WsHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        context.AcceptWebSocketRequest(async webSocketContext =>
        {
            while (true)
            {
                await webSocketContext.WebSocket.ReceiveAsync(new ArraySegment<byte>(new byte[1024]), CancellationToken.None);
            }
        });
    }

    public bool IsReusable { get { return true; } }
}

Luego cree un websocket desde la barra de herramientas del desarrollador en su navegador de esta manera

var ws = new WebSocket("ws://localhost:8881/wshandler.ashx");
ws.onclose = function() { console.log('closed'); };

En el administrador de tareas verá que hay un proceso w3wp.exe para esta aplicación, si lo elimina, el cliente obtiene el evento onclose y se imprime el texto cerrado.

Sin embargo, si crea un websocket como se describe anteriormente y va al administrador de IIS y recicla el grupo de aplicaciones, el websocket no se cerrará y ahora habrá dos procesos w3wp.exe.

Cerrar el socket webws.close(); o actualizar el navegador hará que se cierre el proceso original w3wp.exe.

Parece que la presencia del websocket abierto está causando que IIS no pueda reciclar el grupo de aplicaciones correctamente.

¿Alguien puede averiguar qué cambiar en mi código o qué cambiar en IIS para que esto funcione?

Respuestas a la pregunta(3)

Su respuesta a la pregunta