argon bulletin board

Експертно търсене  

Новини:

Регистрирането на нови потребители е временно деактивирано.

Автор Тема: ASP.NET  (Прочетена 996 пъти)

Ники Вълчанов

  • Неактивен Неактивен
  • Публикации: 526
  • History is written by the victors
ASP.NET
« -: 14.03.2006, 11:01:14 »

Колеги,

бих желал да споделя малко горчив опит с вас :)
В ASP.NET има два начина за подаване на session_id. Единият - чрез cookie, а другият през URL-то. Това се настройва чрез web.config, като се добавя <sessionState cookieless="true || false">. Когато използвате cookie всичко е наред. Даже в по-новите browser-и cookie-тата са забранени за достъп от client-side скриптове, което ги прави още по-надеждни, но когато решите да работите без тях (cookieless="true") тогава URL-to става малко пренаселено със session_id-то. Един начин за решаване на този проблем е като прекарате aspx страницата през frame. По този начин скривате URL-to и респективно session_id-то не се показва, но това не е добро решение!
Ако някой се занимава с ASP.NET и се е сблъсквал с този дразнещ проблем pls ... дайте акъл как да си пусна session_id-то през hidden field и след това да си възобновя сесията.
« Последна редакция: 14.03.2006, 11:05:15 от n_valchanov »
Активен
"Now everything is reflection
as I make my way though this labyrinth.
And my sence of direction
is lost like the sound of my steps!!!"
                                                     Elisa - Labyrinth

Jack Johnson

  • Неактивен Неактивен
  • Публикации: 704
  • Хора, пазете си здравето! То няма цена!
Re: ASP.NET
« Отговор #1 -: 05.04.2006, 11:10:41 »

Ще го кажа съвсем кратко:

Такова нещо не е предвидено да се прави и дори в официалните session tutorials на MSDN не се споменава как да се направи подобно заобикаляне на правилата. IIS-то се грижи за поддържане на сесиите, а от ASP.NET енджина не можеш да се намесиш в поведението на сървъра, така че изход няма или поне аз такъв не открих.

Можеш да пробваш да създадеш твоя си сесия, която да няма нищо общо с оригиналната такава. Просто трябва да наследиш основната форма и да овъррайднеш съответния метод, който вече съм забравил как се казва. Виждал съм готови реализации на това, една от тях е тази:

http://www.codeproject.com/aspnet/StateHijack.asp

И все пак ASP.NET не е създаден с идеята да се слиза чак толкова ниско. Максимумът (или по-точно минимумът), до който аз съм стигал е да напиша енджин за манипулиране на ViewState полето (за сведение ViewState може да стигне и стотици килобайти) чрез реалционна база данни, но никога не ми е идвало на ума да пиша енджин за управление на сесията, защото това си е чисто софтуерно харакири.

Сигурно вече си намерил решение на проблема, все пак доста късно отговарям! Ще се радвам да чуя какво си измислил!
Активен