Вопрос про asp.net, web.config и печенье
Есть веб приложение asp.net в котором ряд пользователей хочет работать под одним логином. Их желание уже не обсуждается.
Я настраиваю состояние сессии тривиальным образом
<sessionstate mode="InProc" stateconnectionstring="tcpip=127.0.0.1:42424" statenetworktimeout="10" sqlconnectionstring="data source=127.0.0.1;Integrated Security=SSPI" sqlcommandtimeout="30" customprovider="" cookieless="UseCookies" cookiename="ASP.NET_SessionId" timeout="20" allowcustomsqldatabase="false" regenerateexpiredsessionid="true" partitionresolvertype="" usehostingidentity="true"> <providers> <clear/> </providers> </sessionstate>
то есть я считаю что в праве расчитывать на то, что если cookies отключены у клиента то он просто не будет их использовать. Вместо этого приложение начинает работать в режиме
cookieless="UseUri"
то есть выдавать идентификатор сессии в адресной строке.
причём, уже для всех пользователей сохраняется одна и та же сессия. (Это описано в книжке но всё равно не приятно)
обнаруживаю что в
<authentication mode="Forms"> <forms loginurl="~/login.aspx" defaulturl="Default.aspx"/> </authentication>
cookieless по дефолту установлен в cookieless="AutoDetect", что видимо и приводило к такому поведению при отсутствии печенья у кого то из пользователей.
меняю его принудительно на cookieless="UseCookies"
заодно по выходу добавляю
Session.Abandon(); Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
Остаётся вопрос — почему web.config несмотря на конкретное указание в каком режиме работать с печеньем продолжает искать дефолтные, скрытые тэги и вести себя в соответствии с ними а не с конкретным указанием.
Да — authentication mode расположено ниже чем sessionState, но это же не повод заменять дефолтным параметром конкретно установленный. Или повод?
Чтоб два раза не вставать — Есть структура каталога в IIS, объявляю одну внутреннию папку application. Но при этом вышестоящий application считает все web.config внутренних папок своим и соответственно наследует всё что находит. Можно ли как то объяснить IIS что это уже не папки главного приложения, а самостоятельное, независимое приложение и брать web.config отттуда не надо?
28 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів