Nesse caso, acho que o erro do SQL Server não é tão revelador quanto o erro do cliente. O erro do cliente indica que a conexão já existia e foi cortada, o que, na minha opinião, é a descrição mais precisa do que está acontecendo. Esta postagem no blog explica o problema.
Basicamente, uma conexão no pool foi cortada por algum motivo (talvez inatividade ou talvez blip de rede) e o cliente não sabe que a conexão foi interrompida até que execute outra consulta usando-a. Isso explica por que esse problema ocorre apenas com o aplicativo do nosso Windows Form, porque esse aplicativo deixaria as conexões inativas por períodos muito mais longos do que os outros aplicativos. Além disso, o aplicativo da web mora no mesmo local físico que o servidor de banco de dados, portanto, não terá tantos problemas de conexão na rede.
Para corrigir o problema, só preciso verificar o erro e executar novamente a consulta uma segunda vez. A consulta deve funcionar na segunda vez porque receberá automaticamente um novo SPID e uma nova conexão.