[ASP.NET] session state id

Pagina: 1
Acties:

  • cossy nl
  • Registratie: Oktober 2004
  • Laatst online: 18-11 16:30
Het volgende is het geval, we hebben een website waar klanten op inloggen, de website maakt door middel van een script connectie met een server bij ons intern in het bedrijf. Hij krijgt daar een session (state) id van terug.
Dus je krijgt een url als:
http://ip/(session state id)/index.aspx

Nu gaan we zelf onze site hosten en onze oude host wil ons niet het script geven omdat het maatwerk was. (we kunnen zelf niet bij onze eigen site).

Ik heb zelf alles lopend, het enige wat ik nodig heb is dat id. De server die het id genereert heb ik toegang toe.

Ik ben dus opzoek naar een manier om die id te genereren op onze eigen server en dan terug te geven naar de site zodat de url gemaakt kan worden.

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Het SessionID in de url is een optie van asp.net zelf. In de web.config vind je een element 'sessionState' in de sectie 'system.web'. Mocht je dit element niet kunnen vinden, dan kun je hem eenvoudig zelf toevoegen.

In jouw geval gaat het specifiek om de 'cookieless' property welke je op true moet zetten. Als asp.net dan een sessionid heeft gegenereerd dan wordt deze niet in een cookie geplaatst, maar als onderdeel van de url. Jouw applicatie hoeft niet zelf dit sessionid uit de url te filteren.

Bij het linken naar andere pages (<asp:HyperLink>) moet je dan wel de tilde prefix (~/Reports/DailyStats.aspx) gebruiken om een volledige url inclusief sessionid te krijgen. Je kunt natuurlijk ook relatieve paden gebruiken.

Voor het opslaan van de sessies in de database, heeft asp.net ook al een oplossing. Sinds asp.net 2.0 is het namelijk mogelijk om de session provider te wijzigen. Het asp.net platform bevat overigens ook een SqlSessionProvider welke je kunt gebruiken. Hoe je een en ander moet gebruiken of wijzigen kun je in de MSDN lezen.

Pas op: Je kunt dus nu niet zelf url's fabriceren als http://www.bedrijf.nl/default.aspx omdat asp.net dan automatisch een nieuw sessionid aanmaakt. Ook html als <a href="/default.aspx"> is nu dan dodelijk voor sessies. Mocht je ergens zelf een url moeten genereren, dan kun je in pages en controls (en alles wat daarvan erft) ook ResolveClientUrl() gebruiken.

Overigens, mocht je later besluiten dan je het sessionid weer in een cookie wilt, dan hoef je alleen maar cookieless naar false te veranderen.

If it isn't broken, fix it until it is..