Concuerdo con Dradi7, verifica que tu procedimiento almacenado devuelva el numero de columnas adecuadas, tambien cabe mencionar que seria buena practica de programacion usar los nombres de las columnas en vez de su ubicacion por ejemplo:
seria mejor usar
Código:
Reader.GetString("Nombre_De_Columna"),
que