ExecuteReader требует открытого и доступного соединения. Текущее состояние соединения: Соединение

При попытке подключиться к базе данных MSSQL через ASP.NET онлайн, я получу следующее, когда два или более человек подключаются одновременно:

ExecuteReader требует открытого и доступного соединения. Текущее состояние соединения - Соединение.

Сайт отлично работает на моем локальном сервере.

Это грубый код.

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;
}

Могу ли я узнать, что могло пойти не так и как это исправить?

Редактировать: не забывать, моя строка подключения и подключение оба в статическом. Я считаю, что это причина. Пожалуйста, порекомендуйте.

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

Ответы на вопрос(1)

Ваш ответ на вопрос