Počítadlo přístupů   otázka

C#, ASP.NET WebForms

Dobrý den,

vytvořil jsem si svou komponentu pro počítání přístupů na stránku. Umístil jsem ji na Master Page.

Problém však je, že se snaží zapisovat přístup při každém zobrazení jakékoliv stránky v Master Page.

protected void Page_Load (object sender, EventArgs e) {
  if (!Page.IsPostBack) {
    String szIpAddress = (String)Request.ServerVariables["remote_host"];
    DataHitCounter counter = new DataHitCounter ();
    counter.Hit (szIpAddress);
  }
}

Chtěl bych se tedy zeptat, jak bych to měl vyřešit, aby byl zápis proveden pouze jednou, ale zároveň aby to vše prováděla tato komponenta ve svých událostech.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Kód pro zaznamenání přístupu přesuňte z MasterPage do Global.asax (při přidání souboru do projektu se jmenuje "Global Application Class"). Použijte událost Session_Start, která se spustí pouze při prvním přístupu uživatele do aplikace. Z důvodu bezstavovosti webových aplikací to samozřejmě nemusí počítat 100%, ale pro tento účel to stačí.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tohle by byla samozřejmě možnost, jenže bych to chtěl mít uvnitř té komponenty, pokud je to možné.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak si v komponentě uložte do objektu Session příznak, že pro tuto session byl přístup započítán.

Zhruba takto:

if (Context.Session["HitCounter"] == null)
{
  Context.Session["HitCounter"] = true;

  // kod pro zaznamenani pristupu
}

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Děkuji, něco takového jsem měl na mysli. Ještě jsem do insertu přidal podmínku, aby se neukládali přístupy uživatelů v rámci stejného dne. Nyní se insert volá jen jednou, což je ideální.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback