Para futuros lectores de esta pregunta:tenga en cuenta que el problema ocurrió porque el OP devolvía demasiadas columnas en la consulta. Vea los comentarios debajo de esta respuesta.
No estoy muy seguro de por qué sucede esto, pero realmente solo necesita verificar las filas una vez, no dos, y Read()
El método ya hace esto.
Así que todo lo que realmente necesitas es
while (reader.Read())
{
// Do your thing
}