Avatar billede connor Nybegynder
07. oktober 2003 - 21:05 Der er 4 kommentarer og
2 løsninger

For mange database forbindelser?

Hvis jeg prøver at "stresse" min webaplikation, ved at trykke på mange links og gøre dette samtidig fra flere computere, kan jeg fremprovokere en fejl...

Webaplikationen kan herefter igen kun komme op ved genstart: c:\winnt\system32\iisreset.exe /RESTART

Se kode herunder:

<%@ Page Language="C#" Debug="true" EnableSessionState="true" EnableViewState="True" %>
<%@ import Namespace="System.Data" %>
<script runat="server">

    void Page_Load(object sender, EventArgs e) {

        // Tilfaeldigt tal imallem 1 og 1000000
        string rndNumber1;
            Random rnd = new Random();
            rndNumber1 = rnd.Next(1,1000000).ToString();

        string rndNumber2 = ""+rndNumber1+1;
        string rndNumber3 = ""+rndNumber1+2;
        string rndNumber4 = ""+rndNumber1+3;
        string rndNumber5 = ""+rndNumber1+4;

        Label1.Text = "<img style=\"WIDTH: 390px; HEIGHT: 200px\" src=\"getimage.aspx?imageID=1&"+rndNumber1.ToString() + "\" />";
        //Label2.Text = "<img style=\"WIDTH: 160px; HEIGHT: 100px\" src=\"getimage.aspx?imageID=2&"+rndNumber2.ToString() + "\" />";
        Label3.Text = "<img style=\"WIDTH: 160px; HEIGHT: 100px\" src=\"getimage.aspx?imageID=3&"+rndNumber3.ToString() + "\" />";
        //Label4.Text = "<img style=\"WIDTH: 160px; HEIGHT: 100px\" src=\"getimage.aspx?imageID=4&"+rndNumber4.ToString() + "\" />";
        Label5.Text = "<img style=\"WIDTH: 160px; HEIGHT: 100px\" src=\"getimage.aspx?imageID=5&"+rndNumber5.ToString() + "\" />";

        int pageID; // Der undersøges om pageID har en værdi.
            if ( Request.QueryString["pageID"] != null ) {
                pageID = int.Parse( Request.QueryString["pageID"] );
                }
            else {
                // Hvis pageID ikke er sat, sættes denne til 1
                pageID=1;
            }
    // pageID bliver lagt i et sessionsobjekt
    //Session.Remove("sessionName");
    Session["sessionName"] = pageID;

    // Database forbindelse
    string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Server.MapPath("database/agro.mdb");

    //Forbindeleseobjekt der tager en parameter med connectionstring, samt placering af DB
    System.Data.OleDb.OleDbConnection dbConnection = new System.Data.OleDb.OleDbConnection(connectionString);

    //SQL-string
    string queryString = "SELECT * FROM side WHERE id = "+pageID+";";

    //OleDbCommand-objekt
    System.Data.OleDb.OleDbCommand dbCommand = new System.Data.OleDb.OleDbCommand();

    //Påsætte SQL-string samt forbindelsesobjekt
    dbCommand.CommandText = queryString;
    dbCommand.Connection = dbConnection;

        // Ved overbelastning kan der opstå fejl her
        try {
            //Åbner forbindelse
            dbConnection.Open();
            }
        catch {
            Response.Write("<b>Beklager - Men der er opstået en fejl. Prøv igen senere.</b><br><br>Database fejl");
        }
    IDataReader dbReader;

    //Henter data fra DB, og lægger dette ind i IDataReader-objektet
    dbReader = dbCommand.ExecuteReader();

    //Så længe der er poster i forespørgselen afvikles denne while-løkke
    while (dbReader.Read()) {
        Overskrift.Text = dbReader["Overskrift"].ToString();
          Tekst1.Text = dbReader["Tekst1"].ToString();
          Tekst2.Text = dbReader["Tekst2"].ToString();
          Tekst3.Text = dbReader["Tekst3"].ToString();
          Tekst4.Text = dbReader["Tekst4"].ToString();
        }
    //int sessioner = Session.Count;
    //string sessionID = Session.SessionID;

    //Session.Contents.Clear ( );
    //Session.Contents.Remove ( intQuote );

    //Lukker forbindelsen
    dbConnection.Close();
    dbConnection.Dispose();
    dbCommand.Dispose();
    dbReader.Dispose();

    //Button1.Attributes.Add("onclick","java script:alert('"+"pageID ="+pageID+"\\nqueryString ="+queryString+"\\nSession[sessionName]"+Session["sessionName"]+"\\nAntal Sessioner: "+sessioner+"\\nSessionID: "+sessionID+"');");
    //Button2.Attributes.Add("onclick","java script:alert('"+"Billede :"+Session["billede"]+"\\nBillede2: "+Session["billede2"]+"\\nBillede3: "+Session["billede3"]+"\\nBillede4: "+Session["billede4"]+"\\nBillede5: "+Session["billede5"]+"\\n\\ngetimage_NY_pageID: "+Session["getimage_NY_pageID"]+"\\nSession[getimageSessionName]"+Session["getimageSessionname"]+"\\nAntal Sessioner: "+Session["sessioner2"]+"');");

    }

</script>
<html>
<head>
    <link media="all" href="include/sidestyle.css" type="text/css" rel="stylesheet" />
</head>
<body>
    <form runat="server">
        <div class="Overskrift"><b><u><asp:Label id="Overskrift" runat="server"></asp:Label></u></b>
        </div>
        <div class="wrappersideboks1">
            <div class="sideboks1"><asp:Label id="Tekst1" runat="server"></asp:Label>
                <br />
                <asp:Label id="Label5" runat="server"></asp:Label>
                <br />
                <br />
                <asp:Label id="Tekst2" runat="server"></asp:Label>
                <br />
                <asp:Label id="Label3" runat="server"></asp:Label>
            </div>
        </div>
        <div class="Tekst3"><asp:Label id="Tekst3" runat="server"></asp:Label><asp:Label id="Label1" runat="server"></asp:Label>
            <br />
            <asp:Label id="Tekst4" runat="server"></asp:Label>
        </div>
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
    </form>
</body>
</html>

-----
Det er linjen: dbConnection.Open();
som der fejles i når fejlen opstår.
Hvad kan dette skyldes?
Er der noget som jeg mangler at lukke ned?
Avatar billede tommer Nybegynder
08. oktober 2003 - 00:28 #1
access, kan ikke klare "flere" brugere samtidig....

man jeg plejer at bruge:
this.Application.Lock();
  kode her..
this.Application.UnLock();

når jeg skriver til en access db, så ungår man da lidt bøvl...
Avatar billede tommer Nybegynder
08. oktober 2003 - 00:29 #2
skriv lige fejlmeddelelsen...så kan man bedre hjælpe..
Avatar billede connor Nybegynder
08. oktober 2003 - 08:18 #3
>> tommer

Det er en "Upeciferet fejl" i den omtalte linje...
Avatar billede connor Nybegynder
08. oktober 2003 - 08:23 #4
>> tommer
Men i mit filfælde bliver der "kun" læst fra databasen og alså ikke skrevet...

Men det kan da ikke være rigtigt at man skal genstarte IIS for at få noget på siden til at virke igen?
Avatar billede jettes Nybegynder
08. oktober 2003 - 11:09 #5
Der er en kendt fejl i framework 1.0 at den ikke smider DB forbindelserne. Jeg har haft problemer med det i Oracle, og mon ikke det er det samme vedr. Access. Prøv at opgradere til framework 1.1 hvis du ikke allerede har gjort det.

Hvis du genstarter IIS*en smider den jo netop forbindelserne.
Avatar billede connor Nybegynder
08. oktober 2003 - 11:44 #6
>>jettes
Tak for tippet, men jeg har framework 1.1 instaleret (ifg windowsupdate)...

Findes der en måde hvorpå man kan undersøge hvilken version som man har instaleret?
Gerne noget som kan køres på en webside...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester