Avatar billede Slettet bruger
06. november 2006 - 14:59 Der er 24 kommentarer

Session C#

Hej.

Jeg har den her kode ("Fra asp.net").

Jeg vil godt have når man går ud af siden går usercount 1 ned. Hvis i forstår..
Altså når man går ind på siden stiger usercount med 1. Og når man forlader den går den 1 ned.
Avatar billede sneakraid Nybegynder
06. november 2006 - 16:24 #1
Du kunne f.eks. lave en UserCount klasse med en property som gemmer antal besøgende. I din global.asax fil under Application_Start kunne du lave en instans af klassen og hælde objektet i f.eks. Application["UserCount"]. Ved Session_Start og Session_End kunne du så hive dit objekt ud fra Application["UserCount"] og ændre på antallet af besøgende. Hvis du forstår? :)
Avatar billede Slettet bruger
06. november 2006 - 16:28 #2
Jeg leder mere efter en kode:)
Avatar billede sneakraid Nybegynder
06. november 2006 - 16:51 #3
Du kan lave en UserCount.cs fil i din App_Code mappe og tilføje det her:

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;

public class UserCount
{
    private int _userCount;

    public UserCount()
    {
        // Constructor
    }

    public int userCount
    {
        get { return _userCount; }
        set { _userCount = value; }
    }

}

Så kunne du lave en global.asax fil (som selvf. skal ligge i roden/root) og til dette her:

<%@ Application Language="C#" %>

<script runat="server">

    void Application_Start(object sender, EventArgs e)
    {
        UserCount uCount = new UserCount();
        uCount.userCount = 0;
        Application["UserCount"] = uCount;
    }
   
    void Application_End(object sender, EventArgs e)
    {
        //  Code that runs on application shutdown

    }
       
    void Application_Error(object sender, EventArgs e)
    {
        // Code that runs when an unhandled error occurs

    }

    void Session_Start(object sender, EventArgs e)
    {
        Session.Timeout = 1;
        UserCount uCount = (UserCount)Application["UserCount"];
        uCount.userCount++;
        Application["UserCount"] = uCount;
    }

    void Session_End(object sender, EventArgs e)
    {
        UserCount uCount = (UserCount)Application["UserCount"];
        uCount.userCount--;
        Application["UserCount"] = uCount;
    }
     
</script>

Måden du får din user count udskrevet på, kan være følgende:

UserCount uCount = (UserCount)Application["UserCount"];
Label1.Text = uCount.userCount.ToString();

Jeg håber du forstår det, ellers må du endelig stille spørgsmål ;)
Avatar billede Slettet bruger
06. november 2006 - 18:28 #4
Ok, Så kan man godt bruge den som online brugere ikke?:)
Avatar billede sneakraid Nybegynder
06. november 2006 - 18:41 #5
Det skulle jeg mene ja .. men lidt afhængigt af hvad din Session.Timeout er sat til(ups, jeg kan se jeg ikke lige har fået fjernet min timeout oppe i koden :)), vil du måske ikke se en helt præcis count af besøgende online, lige nu.

Fordi en besøgendes Session kan jo godt leve noget tid efter at de har lukket deres browser .. dvs. UserCount først bliver opdateret efter f.eks. 20 min. afhængigt hvad Session.Timeout er sat til. Men sådan er det jo.

Håber du kan bruge det :)
Avatar billede Slettet bruger
06. november 2006 - 19:25 #6
Så hvis brugeren bevæger sig så forbliver bliver online på det samme indtil brugeren logget af
Avatar billede sneakraid Nybegynder
06. november 2006 - 19:40 #7
En bruger vil være registreret i din UserCount indtil han/hun logger af, lukker browseren, eller er inaktiv for længe ja ;)
Avatar billede Slettet bruger
06. november 2006 - 19:45 #8
Ok. Prøver det lige
Avatar billede Slettet bruger
06. november 2006 - 19:57 #9
Det virker ikke. Min kode ser sådan her ud:
<%@ Page Language="C#" %>
<html>
<head>
<script runat="server">
UserCount uCount = (UserCount)Application["UserCount"];
            Page.Response.Write("UserCount:" + Application.Get("userCount").ToString());
</script>
<style type="text/css">
.Ind{
background-image:url('http://web154194.ta44.talkactive.net/Grafik/boks2/Topmidt2.png');
width:100px;
border:0px solid black;
height:16px;
font-size:12px;

}
.Ud{
background-image:url('http://web154194.ta44.talkactive.net/Grafik/boks2/Topmidt3.png');
width:100px;
border:0px solid black;
height:16px;
font-size:12px;
}
</style>
</head>
<body leftmargin="0" topmargin="0" rightmargin="0" bottommargin="0" style=" font-size:15px; color:white;     background-image:url('../Grafik/Boks2/Topmidt.gif'); text-align:right">
<p align="right">
<asp:Label ID="Label1" Text="" runat="server"></asp:Label>
<form action="http://web154194.ta44.talkactive.net/Profil/Seek.asp?Action=Sendt" target="next" method="post" style="margin:0px">
<input type="text" name="Bruger" style="height:16px;  font-size:12px;">
<input class="Ud" type="submit" value="Søg!"
onMouseOver="this.className='Ind'"
onMouseOut="this.className='Ud'"
onKeyDown="this.style.border='1px solid black'"
>
</form>
</p>
</body></html>

Fejlen kan ses her:

http://web154194.ta44.talkactive.net/Top.aspx
Avatar billede sneakraid Nybegynder
06. november 2006 - 20:06 #10
Prøv med det her:

<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        UserCount uCount = (UserCount)Application["UserCount"];
        Response.Write("UserCount: " + uCount.userCount.ToString());
    }
</script>
Avatar billede Slettet bruger
06. november 2006 - 20:39 #11
http://web154194.ta44.talkactive.net/Top.aspx siger stadig fejl. Kan det være at jeg skal hente UserCount.cs filen? Og hvordan?
Avatar billede sneakraid Nybegynder
06. november 2006 - 20:58 #12
Din klasse ligger i App_Code folderen, ik ? Og navnet på den er UserCount.cs ?

Der ser for mig nemlig ud som om at du har en Top.aspx med en usercount.aspx.cs som codebehind, for det går jo ik hvis du os har en fil i App_code som hedder det :)
Avatar billede Slettet bruger
06. november 2006 - 21:07 #13
Jo..

<%@ Page Language="C#"  CodeFile="App_code/UserCount.cs" %>
Den ligger rigtigt
Avatar billede sneakraid Nybegynder
06. november 2006 - 21:14 #14
UserCount.cs skal ikke være din CodeFile. "UserCount.cs" er en class-file som indeholder den klasse hvor du har count i. CodeFile skal selvf. være Top.aspx.cs (hvis det er Top.aspx vi snakker om) :)

Jeg kan lige lave en zip med mit eks. i og smide til dig? :)
Avatar billede sneakraid Nybegynder
06. november 2006 - 21:25 #15
Avatar billede Slettet bruger
06. november 2006 - 21:25 #16
Det ville være dejligt, med en zip fil:)
Avatar billede Slettet bruger
06. november 2006 - 21:30 #17
Avatar billede sneakraid Nybegynder
06. november 2006 - 22:10 #18
Hm, jeg tror du bliver nødt til at vise mig din Top.aspx + tilhørende codebehind-fil, før jeg lige kan sætte en finger på hvad det kan være. :)
Avatar billede Slettet bruger
06. november 2006 - 22:25 #19
<%@ Page Language="C#" %>
<html>
<head>
<script runat="server">
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        UserCount uCount = (UserCount)Application["UserCount"];
        Label1.Text = uCount.userCount.ToString();
    }
}
</script>
<style type="text/css">
.Ind{
background-image:url('http://web154194.ta44.talkactive.net/Grafik/boks2/Topmidt2.png');
width:100px;
border:0px solid black;
height:16px;
font-size:12px;

}
.Ud{
background-image:url('http://web154194.ta44.talkactive.net/Grafik/boks2/Topmidt3.png');
width:100px;
border:0px solid black;
height:16px;
font-size:12px;
}
</style>
</head>
<body leftmargin="0" topmargin="0" rightmargin="0" bottommargin="0" style=" font-size:15px; color:white;     background-image:url('../Grafik/Boks2/Topmidt.gif'); text-align:right">
<p align="right">
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<form action="http://web154194.ta44.talkactive.net/Profil/Seek.asp?Action=Sendt" target="next" method="post" style="margin:0px">
<input type="text" name="Bruger" style="height:16px;  font-size:12px;">
<input class="Ud" type="submit" value="Søg!"
onMouseOver="this.className='Ind'"
onMouseOut="this.className='Ud'"
onKeyDown="this.style.border='1px solid black'"
>
</form>
</p>
</body></html>

Den har ikke nogen codebehind fil
Avatar billede sneakraid Nybegynder
06. november 2006 - 22:52 #20
Arh ja, nu kan jeg se problemet :)

Ændrer det her:

<script runat="server">
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        UserCount uCount = (UserCount)Application["UserCount"];
        Label1.Text = uCount.userCount.ToString();
    }
}
</script>

Til dette:

<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        UserCount uCount = (UserCount)Application["UserCount"];
        Label1.Text = uCount.userCount.ToString();
    }
</script>
Avatar billede Slettet bruger
07. november 2006 - 16:40 #21
Virker stadig ikke. :(
Avatar billede Slettet bruger
07. november 2006 - 16:41 #22
Eller det virker i min locale server men ikke på min side..:
Avatar billede sneakraid Nybegynder
07. november 2006 - 19:30 #23
Hm, hvis jeg f.eks. åbner denne side: http://web154194.ta44.talkactive.net/Top.aspx

Så ser det da ud til at virke ganske udemærket? Får du evt. nogen fejl eller noget, siden du siger det ikke virker?
Avatar billede Slettet bruger
07. november 2006 - 19:38 #24
Jeg lavde noget om. Jeg ved ikke om den virker nemlig:(
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