Laden...
D
DeadEye myCSharp.de - Member
Softwaredeveloper Vienna Dabei seit 28.03.2008 55 Beiträge
Benutzerbeschreibung

Forenbeiträge von DeadEye Ingesamt 55 Beiträge

01.04.2008 - 15:33 Uhr

Ich stehe vor folgendem Szenario:

Eine grosze Webanwendung, ein Loginform. Man loggt sich ein, ein FormsAuthenticationTicket wird erstellt mit einer Dynamischen Expiration time (15 bzw 60 Minuten, je nachdem ob man die Anwendung aus dem Intra oder Extranet aufruft).

Nun gibt es ueberall in der Anwendung eine JavaScript Uhr die die Sessiontzeit gegen 0 herunterzaehlt. Bei jedem click (inkl. Ajax clicks) wird diese Uhr wieder auf die Expiration zurueckgestellt.

Soweit so gut.

Nun ist mir aufgefallen das in manchen Seiten der Applikation die Session anscheinend vor der Uhr ablaeuft (btw, SessionTimeout == FormExpirationTime).

Nach einigem Herumprobieren hab ich mir eine Datei angelegt in der die Expirationtime des AuthticketsCookies steht. Die Tickest gelten ja bis SessionEnde, und die eigentliche Zeit des ablaufs ist im Cookie codiert, so hab ich deshalb so umstaendlich machen muessen.

Nun Sagen wir um 16:00 Logge ich mich ein. Timeout: 15 Mins.
CookieExpiration ist um 16:15. Gut.
Ich aktuallisiere die Seite um 16:05.
CookieExpiration ist um 16:15. Huh? Seltsam.
Ich aktuallisiere die Seite um 16:07.
CookieExpiration ist um 16:15. Huh? Da stimmt doch was nicht.
Ich aktuallisiere die Seite um 16:08.
CookieExpiration ist um 16:23. Oha. Jetzt wurde der Timeout erst verlaengert.

Seht ihr worauf ich hinaus will? Ich bin davon ausgegangen das bei jedem Seitenaufruf das Tickent um TickenExp. + FormExpirationTime verlaengert wird.. Das scheint aber nicht bei jedem Aufruf zu geschehen sondern erst nach einer gewissen Zeit.

Damit wird mir auch klar weshalb Manchmal meine JS Uhr falsch tickt.

Aber hat jemand von euch eine Ahnung wehsalb das so ist?
Ich benutze ASP.NET 3.5 und 'echtes' Ajax gemischt mit ATLAS Ajax.

mfg DeadEye

31.03.2008 - 13:25 Uhr

Hi,

wir hatten bei uns auch ab und zu IIS6 mit PHP5 und jedesmal hat es eigentlich nur mehr leid als freude bereited. Abgesehen von der Schwierigen installation - denn wenns mal laeuft dann laeufts - auch mit der Einbindung neuer PHP Module (was sich dann so auswirkt das zb MySQLi funktioniert, GD allerdings nicht)

Inzwischen regeln wir das ganze nur noch so das zb innerhalb einer VMWare oder auf einen anderen Server Linux laeuft und den ganzen PHP kram abwickelt.

Um zu deinem Problem zu kommen:
Ich habe die Erfahrung gemacht, das wenn zB Ein PHP Modul nicht funktioniert (zb wenn du einen mysql aufruf hast, aber mysql waere fehlerhaft) Das dann eine Fehlermeldung ueber den IIS selbst ausgegen wird - und solange bis jemand diese Fehlermeldung wegklickt der IIS nicht mehr weiterlaeuft. Eventuell haengt das mit deinem Problem zusammen.

Hast du PHP und ASP.NET Webseiten voneinander getrennt, oder hast du 1 Applikation die beides gleichzeitig nutzt?

Sind sie getrennt koenntest du fuer die Anwendungen jeweils einen Applikationpool machen, eventuell hilft das was (Allerdings weis ich nicht wieweit man das im Taskmanager ueberhaupt sieht...)

MfG DeadEye

28.03.2008 - 11:23 Uhr

Okay, ich werde das mal versuchen, hoert sich aber alles gut und logisch an.
Ganz dickes Danke von mir mal 😁

MfG DeadEye

28.03.2008 - 11:08 Uhr

@JAck30lena

Okay, das liesze sich bewerkstelligen, aber wie erhalte ich dann die Daten? Lasse ich den DataTable, indem ich die Daten bekomme, in einem Objekt einfach weiter bestehen?

Ich komme urspruenglich aus der Web-Welt darum habe ich das Panel mit Scrollbar quasi gleichbehandelt wie ein HTML-Div was vermutlich der Fehler ist.

Aber wenn ich jetzt, sagen wir 10 mal diese Objekt erzeuge, wenn ich dann runterscrolle in diesem Panel, lasse ich das Oberste UserControl einfach unten drannhaengen wenn es im Panel selbst nicht mehr sichtbar ist?
Da ist ja doch noch einiges an Berechnungen noetig, richtig?

MfG DeadEye

28.03.2008 - 10:49 Uhr

Hallo zusammen!

Ich habe folgendes Problem:
Ich habe vor ca 1 Jahr eine Applikation (eine Art Verwaltungssoftware) fuer einen Kunden geschrieben, das war damals meine erste .Net Applikation.

Das Programmfenster ist in 2 Hauptbereiche geteilt, links die Modulauswahl und rechts das Hauptfenster des Moduls.

In diesem Hauptfenster gibt es ein TabControl mit 6 Tabs.
In diesen Tabs befindet sich jeweils ein Panel welches eine Liste aus von mir erstellten UserControls darstellt. JEdes UserControl beinhaltet 4-6 Buttons, mehrere Labels und mehrere Pictureboxen.

Jede Liste beinhalted bis zu 100 dieser Controls.
Wenn ich nun das Programm nebenbei im TaskManager beobachte stelle ich fest, das sowie ich so eine Liste darstellen lasse die Anzahl der 'BENUTZER-Objekte' in die hoehe schnallst (ca 2500 bei einer Liste von 100 UserControls). Wenn ich jetzt auf ein weiteres Tab schalte erhoeht sich die anzahl der 'BENUTZER-Objekte' wieder um 2500 und so weiter. Das ist natuerlich enorm.

Die Anzahl der Handels liegt bei ca 500, die anzahl der Threads bei ca 20. GDI-Objekte gibt es laut Taskmanager ca 120.

Wenn nun die Anzahl der Benutzer-Objekte eine gewisse Anzahl uebersteigt (je mehr Programme offen sind, umso niedriger ist diese Anzahl dann) stuertzt das Programm mit einer Exception ab die lauted 'Error creating window handle'

Beim Panel indem die UserControls drinnen sind habe ich bereits versucht zu berechnen wann Objekte Visible sein sollen und wann nicht, das hat auch ein bischen geholfen, aber wenn man mal ganz nach unten gescollt hat kommt man wieder auf die 2500 Objekte)

Wie kann ich mein Programm Ressourcensparender machen, vorallem bei diesen 'BENUTZER-Objekten'??

MfG DeadEye