Avoir D'Erreur “Le Système De.IndexOutOfRangeException”. Pourquoi?

J'ai le Webservice suivant:

using (SqlCommand cmd = new SqlCommand(@"SELECT r.NAME, s.NAME FROM REGION r LEFT OUTER JOIN STADT s ON s.REGION_ID = r.ID ORDER BY r.NAME", con))
{
    con.Open();
    using (SqlDataReader rdr = cmd.ExecuteReader())
    {
        while (rdr.Read())
        {
            if (rdr["r.NAME"] != DBNull.Value && rdr["s.NAME"] != DBNull.Value)
            {
                stadtObject.Add(new STADT()
                {
                    RegionName = rdr["r.NAME"].ToString(),
                    StadtName = rdr["s.NAME"].ToString()
                });
            }
        }
    }
}

J'ai testé l'Instruction SQL dans SQL Management Studio et de son travail comme un charme. Mais j'obtiens un message d'Erreur si j'invoque la Méthode dans le Navigateur :

System.IndexOutOfRangeException: r.NAME
   at System.Data.ProviderBase.FieldNameLookup.GetOrdinal(String fieldName)
   at System.Data.SqlClient.SqlDataReader.GetOrdinal(String name)
   at System.Data.SqlClient.SqlDataReader.get_Item(String name)
   at StadtHelper.Stadt() in C:\Users\Yeah\Documents\Visual Studio 2010\Projects\WebService1\WebService1\StadtHelper.cs:line 31
   at WebService1.Service1.Stadt() in C:\Depp\Ushi\Documents\Visual Studio 2010\Projects\WebService1\WebService1\Service1.asmx.cs:line 77

Je ne sais pas ce que je fais de mal. Peut-être que vous pourrez m'aider.

Vous en remercie d'avance.

avez-vous essayez de déboguer le code? Définir un point d'arrêt au rdr["r.name"] et de voir ce qui est retourné (je ne me souviens pas et n'avez pas visual studio, mais il peut être un nul et n'est pas dbnull...)
Juste pour référence future. Cette IndexOutOfRangeException se produit également lorsque AUCUN de la colonne correspond, par exemple, dans le cas d'une faute de frappe!

OriginalL'auteur Bashud | 2012-06-07