Eu tive um problema semelhante no passado, então estou ansioso para ver uma solução para essa questão. O comentário de Aaron Bertrand sobre o OP levou a A consulta expira quando executada a partir da Web, mas super-rápida quando executada a partir do SSMS , e embora a pergunta não seja uma duplicata, a resposta pode muito bem se aplicar à sua situação.
Em essência, parece que o SQL Server pode ter um plano de execução em cache corrompido. Você está acertando o plano ruim com seu servidor web, mas o SSMS aterrissa em um plano diferente, pois há uma configuração diferente no sinalizador ARITHABORT (que de outra forma não teria impacto em sua consulta/proc armazenado em particular).
Consulte ADO.NET chamando o procedimento armazenado T-SQL causa um SqlTimeoutException para outro exemplo, com uma explicação e resolução mais completas.