Ist die Verwendung eines Singletons für die Verbindung eine gute Idee in der ASP.NET-Website

Ich verwende derzeit ein Singleton in meiner Webanwendung, sodass immer nur eine Verbindung zur Datenbank besteht.

Ich möchte wissen, ob es eine gute Idee ist, da ich im Moment Probleme mit diesem Fehler habe:

Zeitüberschreitung. Das Zeitlimit ist abgelaufen, bevor eine Verbindung aus dem Pool hergestellt wurde. Dies ist möglicherweise darauf zurückzuführen, dass alle Poolverbindungen verwendet wurden und die maximale Poolgröße erreicht wurde.

Ein weiterer wichtiger Punkt ist, dass sich meine Website derzeit in der Entwicklungsphase befindet und nicht viele Leute darauf zugreifen, sodass ich nicht verstehe, warum ich diesen Fehler erhalte!

Hier ist der Code meines Singleton:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

/// <summary>
/// This class take care of all the interaction with the database
/// </summary>
public class DatabaseFacade
{
    SqlConnection m_conn = null;

    string m_csLanguageColumn;

    //Variables that implement the Singleton pattern
    //Singleton pattern create only one instance of the class
    static DatabaseFacade instance = null;
    static readonly object padlock = new object();

    /// <summary>
    /// Private constructor. We must use Instance to use this class
    /// </summary>
    private DatabaseFacade()
    {
    }

    /// <summary>
    /// Static method to implement the Singleton
    /// </summary>
    public static DatabaseFacade Instance
    {
        get
        {
            lock (padlock)
            {
                if (instance == null)
                {
                    instance = new DatabaseFacade();
                }
                return instance;
            }
        }
    }

    /// <summary>
    /// Do the connection to the database
    /// </summary>
    public void InitConnection(int nLanguage)
    {
        m_conn = new SqlConnection(GetGoodConnectionString());

        try
        {
            //We check if the connection is not already open
            if (m_conn.State != ConnectionState.Open)
            {
                m_conn.Open();
            }

            m_csLanguageColumn = Tools.GetTranslationColumn(nLanguage);

        }
        catch (Exception err)
        {
            throw err;
        }
    }
}

Danke für Ihre Hilfe!

Antworten auf die Frage(3)

Ihre Antwort auf die Frage