ExecuteReader requer uma conexão aberta e disponível. O estado atual da conexão é Conectando

Ao tentar me conectar ao banco de dados MSSQL via ASP.NET on-line, receberei o seguinte quando duas ou mais pessoas se conectam simultaneamente:

ExecuteReader requer uma conexão aberta e disponível. O estado atual da conexão é Conectando.

O site funciona bem no meu servidor localhos

Este é o código aproximado.

public Promotion retrievePromotion()
{
    int promotionID = 0;
    string promotionTitle = "";
    string promotionUrl = "";
    Promotion promotion = null;
    SqlOpenConnection();
    SqlCommand sql = SqlCommandConnection();

    sql.CommandText = "SELECT TOP 1 PromotionID, PromotionTitle, PromotionURL FROM Promotion";

    SqlDataReader dr = sql.ExecuteReader();
    while (dr.Read())
    {
        promotionID = DB2int(dr["PromotionID"]);
        promotionTitle = DB2string(dr["PromotionTitle"]);
        promotionUrl = DB2string(dr["PromotionURL"]);
        promotion = new Promotion(promotionID, promotionTitle, promotionUrl);
    }
    dr.Dispose();
    sql.Dispose();
    CloseConnection();
    return promotion;
}

Posso saber o que pode ter dado errado e como corrigi-lo?

Edit: Para não esquecer, minha cadeia de conexão e conexão estão ambas estáticas. Eu acredito que este é o motivo. Por favor informar

public static string conString = ConfigurationManager.ConnectionStrings["dbConnection"].ConnectionString;
public static SqlConnection conn = null;

questionAnswers(2)

yourAnswerToTheQuestion