Hallo,
habe folgende(s) Problem(e).
Ich habe mehrere ASP.NET Webanwendungen (Alle auf einem Webserver (noch)). An einer Anwendung erfolgt die Authentifizierung / Login, anschließend stehen dem Anwender mehrere Applikationen zur Auswahl, die er aber nicht parallel aufrufen kann, er ist also immer nur in einer Anwendung. Bei erfolgreicher Authentifizierung wird ein Profil generiert. Jetzt gilt es, dieses Profil an einem geeigneten Ort abzulegen und somit beginnen die Probleme.
Sessions funktionieren leider nicht, da die immer nur auf eine Webanwendung beschränkt sind und nicht über die Anwendungsdomänengrenzen hinaus zugreifbar sind.
Also habe ich mich für Cookies entschieden, diese sind mir aber nicht unzuverlässig genug, denn es kommt, vor dass in meiner Entwicklungsumgebung alles funktioniert und im Echtbetrieb (vom selben Client aus getestet) das Cookie nicht gespeichert wird. Zudem hat ein Cookie eine Grenze von 4096 Byte und es können max bis zu 10KB für das Profil nötig sein.
Webdienste möchte ich auch nicht verwenden, da die in unserer Umgebung nicht zulässig sind und Microsoft auch nicht wirklich davon überzeugt ist.
Es gibt da so eine MarshalByRefObject Klasse von der man erben kann um Daten über diese Grenzen hinaus zugreifbar zu machen.
Meine Frage ist konkret
Müssen meine Profildaten als Datei auf dem Server abgelegt werden wenn ich zwischen Webanwendungen darauf zugreifen möchte, oder kann ich diese als Hashtable im Thread laufen lassen und somit im Speicher des Servers?
Welche Möglichkeiten gibt es darüber hinaus?
Speicherung im Filesystem sagt mir auch nicht wirklich zu, da dies nicht so performant ist und bei JEDEM durchlaufen der global.asax einer Anwendung auf das Profil zugegriffen werden muss. (Timeout setzen und prüfen etc.)
Eine Speicherung des Profils im SQL Server fällt derzeit auch flach.
Am liebsten wäre mir eine Lösung, bei der das Profil im Arbeitsspeicher des Servers liegt.
Ach und was mir gerade noch einfällt, wie kann ich das Profil, bzw. den Speicherort hinterher eindeutig identifizieren wenn ich in einer anderen Applikation bin? Es ist in unserer Umgebung kein Auslesen der Anwenderkennung möglich.
Hat jemand einen Lösungsansatz?
Blöde Fragen, oder?!
Danke euch trotzdem schon einmal!
Gruß
DanyCode
habe folgende(s) Problem(e).
Ich habe mehrere ASP.NET Webanwendungen (Alle auf einem Webserver (noch)). An einer Anwendung erfolgt die Authentifizierung / Login, anschließend stehen dem Anwender mehrere Applikationen zur Auswahl, die er aber nicht parallel aufrufen kann, er ist also immer nur in einer Anwendung. Bei erfolgreicher Authentifizierung wird ein Profil generiert. Jetzt gilt es, dieses Profil an einem geeigneten Ort abzulegen und somit beginnen die Probleme.
Sessions funktionieren leider nicht, da die immer nur auf eine Webanwendung beschränkt sind und nicht über die Anwendungsdomänengrenzen hinaus zugreifbar sind.
Also habe ich mich für Cookies entschieden, diese sind mir aber nicht unzuverlässig genug, denn es kommt, vor dass in meiner Entwicklungsumgebung alles funktioniert und im Echtbetrieb (vom selben Client aus getestet) das Cookie nicht gespeichert wird. Zudem hat ein Cookie eine Grenze von 4096 Byte und es können max bis zu 10KB für das Profil nötig sein.
Webdienste möchte ich auch nicht verwenden, da die in unserer Umgebung nicht zulässig sind und Microsoft auch nicht wirklich davon überzeugt ist.
Es gibt da so eine MarshalByRefObject Klasse von der man erben kann um Daten über diese Grenzen hinaus zugreifbar zu machen.
Meine Frage ist konkret
Müssen meine Profildaten als Datei auf dem Server abgelegt werden wenn ich zwischen Webanwendungen darauf zugreifen möchte, oder kann ich diese als Hashtable im Thread laufen lassen und somit im Speicher des Servers?
Welche Möglichkeiten gibt es darüber hinaus?
Speicherung im Filesystem sagt mir auch nicht wirklich zu, da dies nicht so performant ist und bei JEDEM durchlaufen der global.asax einer Anwendung auf das Profil zugegriffen werden muss. (Timeout setzen und prüfen etc.)
Eine Speicherung des Profils im SQL Server fällt derzeit auch flach.
Am liebsten wäre mir eine Lösung, bei der das Profil im Arbeitsspeicher des Servers liegt.
Ach und was mir gerade noch einfällt, wie kann ich das Profil, bzw. den Speicherort hinterher eindeutig identifizieren wenn ich in einer anderen Applikation bin? Es ist in unserer Umgebung kein Auslesen der Anwenderkennung möglich.
Hat jemand einen Lösungsansatz?
Blöde Fragen, oder?!
Danke euch trotzdem schon einmal!
Gruß
DanyCode