Eu sou o pôster original da pergunta referenciada (login perdido) e nunca consegui descobrir. No final, eu atribuí isso ao mau voodoo, sacrifiquei a limpeza e fui com algo como
bool readerHasRows=false;
while(reader.reader())
{
readerHasRows=true;
doStuffOverAndOver();
}
if (!readerHasRows)
{
probablyBetterShowAnErrorMessageThen();
}
O que foi realmente estranho foi que funcionou em uma página aspx e não em outra, apesar dos blocos de código serem quase idênticos ao procedimento armazenado usado.
Escusado será dizer que estou evitando .HasRows de agora em diante;)
EDITAR - Management Studio mostra mensagens na aba de mensagens no procedimento do problema no meu projeto também. Então essa parece ser a causa do problema. Mas por que iria bugar .HasRows??
EDIT2 - Confirmado, alterou a consulta para evitar as mensagens de aviso e .hasrows agora é verdadeiro.