[ASP.NET / IIS] Onverwachte Sessie-timeout

Pagina: 1
Acties:
  • 152 views sinds 30-01-2008
  • Reageer

  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 31-10 11:58
Waarschijnlijk is dit meer een probleem van (de configuratie van) IIS. Als er 10 minuten geen activiteit op de site is geweest, wordt de sessie geleegd, tewijl ik deze op 60 minuten heb ingesteld.

Het probleem deed zich eerst voor door een teveel aan geheugengebruik door de connecties met een Access DB, waardoor er een Application Recycle optrad, maar dat is volgens mij opgelost toen ik het volledig omgeschreven heb naar SQL Server.

De Web.Config ziet er als volgt uit:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
  <connectionStrings>
    <add name="###ConnectionString" connectionString="Data Source=localhost;Initial Catalog=###;User Id=###;Password=###;Integrated Security=False" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <system.web>
    <customErrors mode="Off"/>
    <globalization culture="nl-NL" />
    <sessionState timeout="60" />
    <pages enableEventValidation="false" viewStateEncryptionMode="Never" />
  </system.web>
</configuration>


De enableEventValidation en viewStateEncryptionMode zo ingesteld wil wel eens de oplossing zijn voor deze fout(melding): Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.

Maar dat gaat bij mij nog steeds niet op, want als ik op een pagina zit met een FormView en switch naar EditMode terwijl de sessie verlopen is (te vroeg!), treedt de fout nog steeds op.

Ik heb bij de provider al de errorlogs opgevraagd, maar kan zelf in de logs die beschikbaar zijn in Plesk niet echt iets vinden (sowieso geen foutmeldingen?).

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack


  • gorgi_19
  • Registratie: Mei 2002
  • Nu online

gorgi_19

Kruimeltjes zijn weer op :9

Heb je niets in je pagina gezet waardoor deze eerder timeout?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 18:04
Maak je gebruik van IIS 6 ? Zoja, dan moet je eens kijken naar de configuratie van de Application Pool die gebruikt wordt door IIS voor jouw applicatie. Dit is by default de DefaultAppPool.
Daarin wordt gespecifieerd wanneer de worker processes mogen gerecycled worden. Ik geloof echter dat dit by default 20 minuten is, en geen 10.

https://fgheysels.github.io/


  • eek
  • Registratie: Februari 2001
  • Laatst online: 06-04-2020

eek

@MagickNET

Het zou ook kunnen dat iets ervoor zorgt dat iis een recycle krijgt. Bijvoorbeeld een virusscanner die bestanden aan loopt te raken. Je zou dit eens in je global.asax kunnen zetten om achter de reden te komen:

C#:
1
2
3
4
  void Application_End(Object sender, EventArgs e) {
    string vReason = System.Web.Hosting.HostingEnvironment.ShutdownReason.ToString();
    // doe hier iets met vReason
  }


Uitleg: System.Web.ApplicationShutdownReason

Skill is when luck becomes a habit.


  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 31-10 11:58
gorgi_19 schreef op woensdag 03 januari 2007 @ 09:34:
Heb je niets in je pagina gezet waardoor deze eerder timeout?
Als het goed is niet, het is/zijn gewoon een simpele pagina('s) met bijvoorbeeld een FormView en een SqlDataSource, verder geen code.
whoami schreef op woensdag 03 januari 2007 @ 09:36:
Maak je gebruik van IIS 6 ? Zoja, dan moet je eens kijken naar de configuratie van de Application Pool die gebruikt wordt door IIS voor jouw applicatie. Dit is by default de DefaultAppPool.
Daarin wordt gespecifieerd wanneer de worker processes mogen gerecycled worden. Ik geloof echter dat dit by default 20 minuten is, en geen 10.
Dit wordt toch wel overruled door de Web.Config?
eek schreef op woensdag 03 januari 2007 @ 10:06:
Het zou ook kunnen dat iets ervoor zorgt dat iis een recycle krijgt. Bijvoorbeeld een virusscanner die bestanden aan loopt te raken. Je zou dit eens in je global.asax kunnen zetten om achter de reden te komen:

C#:
1
2
3
4
  void Application_End(Object sender, EventArgs e) {
    string vReason = System.Web.Hosting.HostingEnvironment.ShutdownReason.ToString();
    // doe hier iets met vReason
  }


Uitleg: System.Web.ApplicationShutdownReason
Bedankt, zal er naar kijken :) Maar als het goed is zit er geen virusscanner op de websites. En iedere 10 minuten een viruscheck is toch ook niet echt gangbaar?

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack


  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 31-10 11:58
eek schreef op woensdag 03 januari 2007 @ 10:06:
Het zou ook kunnen dat iets ervoor zorgt dat iis een recycle krijgt. Bijvoorbeeld een virusscanner die bestanden aan loopt te raken. Je zou dit eens in je global.asax kunnen zetten om achter de reden te komen:

C#:
1
2
3
4
  void Application_End(Object sender, EventArgs e) {
    string vReason = System.Web.Hosting.HostingEnvironment.ShutdownReason.ToString();
    // doe hier iets met vReason
  }


Uitleg: System.Web.ApplicationShutdownReason
Ik heb het uitgeprobeerd met de Global.asax, en krijg als eerste een bericht binnen van de Application_End met de reden "HostingEnvironment", en direct daarop van de Session_End dat de sessie dus is afgelopen, wat meestal precies 6 minuten na de aanvang ervan is...

Van David Wang heb ik wel een interessant artikel erover gevonden, maar moet daarvoor contact opnemen met m'n provider om eventueel aanpassingen in de instellingen te kunnen doen, en weet ik ook niet precies wat er nu ingesteld staat.

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack


  • eek
  • Registratie: Februari 2001
  • Laatst online: 06-04-2020

eek

@MagickNET

Wat je ook nog zou kunnen doen is zelf een sql session provider te schrijven door over te erven van SessionStateStoreProviderBase. Dit heb ik op mijn werk ook gedaan omdat wij een soort gelijk probleem hadden. Ben er zelf erg blij mee dat alle sessies nu in een database zitten. Microsoft heeft volgens mij ook al zoiets zelf, maar dat zal je zelf maar moeten uitzoeken.

Skill is when luck becomes a habit.


  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 31-10 11:58
De sessie-timteout is opgelost door instellingen in IIS6 (zoals vermeld in het artikel van David Wang). Daarna trad er nog de helft van de tijd een error op dat de machineKey ongeldig was, wat vooralsnog is opgelost door enableViewStateMac="false" in de Web.Config op te nemen.

Ik weet dat dit een security-issue is, maar is voor mijn geval niet zo erg daar het in het beheer zit wat beveiligd is met een wachtwoord. Het zou kunnen dat de server multi-processor is waardoor het probleem optreed en ik eigenlijk een custom-machinekey in de Machine.Config in moet stellen, maar ik vind het zo wel prima.

Artikeltje over het probleem: http://www.codinghorror.com/blog/archives/000132.html

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack

Pagina: 1