Динамически устанавливать домен файла cookie сеанса в ASP.NET

#asp.net #session #cookies #subdomain

#asp.net #сессия #файлы cookie #поддомен

Вопрос:

Я использую объекты сеанса в своем веб-приложении, которые отслеживаются с помощью ASP.NET сессионный файл cookie внутри, как мы все знаем. Таким образом, доступ к этому файлу cookie необходим для доступа к объектам сеанса. Я хочу, чтобы мой asp.net приложение работает под http:// и http://www или любым поддоменом (домен мне неизвестен на момент разработки).

Комментарии:

1. Вы имеете в виду, как предоставлять общий доступ к файлам cookie в поддомене .. или когда они используются с «www» или без него ….???

Ответ №1:

Невозможно выполнить. Файл cookie сеанса работает только для 1 домена и только для 1 домена.

Однако вы могли бы написать свою собственную систему управления сеансом и, возможно, таким образом выполнить общий сеанс. Я все еще не думаю, что вы сможете повторно использовать файл cookie, потому что браузер даже не отправит его в первую очередь.


Еще немного подумав, я решил, что не уверен. 🙂 Возможно, если оба поддомена сопоставляются с одним и тем же ASP.NET приложение, в котором вы могли бы заставить общий сеанс работать. Все, что вам нужно сделать, это установить ваши файлы cookie как таковые:

   <httpCookies domain=".maindomain.com">
  

Если разные поддомены не сопоставляются с одним и тем же приложением, я думаю, вам определенно придется написать собственное управление сеансами.


Очевидно, что на этом этапе вы должны отнестись ко всему, что я написал, с долей скептицизма. Я оставляю свой ответ только для того, чтобы вы получили некоторые идеи и чтобы люди могли прокомментировать его правильность.

Комментарии:

1. Это возможно. Домен не изменится в жизненном цикле приложения. Когда-нибудь это станет известно. Вы можете получить текущий домен через Request.Url и установить ASP.NET_SessionId во время выполнения, но это немного сложно, и я не знаю, как это сделать.

2. Теперь мы ближе. На самом деле я делаю то же самое, что и ваше предложение (usnig httpCookies в webconfig) на данный момент, но ищу какой-нибудь код для размещения за aspx-страницами, где управляется сеанс. Затем я могу удалить этот жестко закодированный ключ web.config, и приложение будет работать в любом домене. Что мне нужно, так это сделать то, что этот ключ делает в коде (где во время выполнения я знаю домен).

Ответ №2:

Почему бы вам не оставить поле domain пустым? Таким образом, вы не будете привязывать свои файлы cookie к какому-то определенному домену и сможете хорошо воспроизводить независимо от домена вашего сайта.

Комментарии:

1. Нет. Если оставить его пустым, это означает, что он будет использовать точно тот домен, с которого пришел запрос. Итак, если вы находитесь на www.site.com файл cookie будет установлен для www.site.com и БЫТЬ недоступным для *.site.com .