Asp.net System.Web.HttpContext.Current.Session null в global.asax - PullRequest
14 голосов
/ 16 ноября 2008

У меня есть собственный объект участника безопасности, который я установил в global.asax для текущего потока, и все хорошо, проблем обычно нет.

Однако я просто добавляю функцию динамического изображения, когда страница обрабатывает изображение, и всякий раз, когда эта страница динамического изображения загружается, System.Web.HttpContext.Current.Session в global.asax имеет значение null, что не позволяет установив субъект безопасности как нормальный и каскадные проблемы с этого момента.

Обычно сеанс имеет значение null в global.asax только один раз во время сеанса в начале, когда пользователь входит в систему, после чего он всегда доступен с этим единственным исключением.

Страница с динамическим изображением загружается, когда браузер обнаруживает изображение на исходной странице, т.е.

Я предполагаю, что это какой-то аспект того факта, что браузер запрашивает эту страницу, не отправляя с ней некоторые учетные данные?

Любая помощь будет принята с благодарностью.

Ответы [ 4 ]

25 голосов
/ 16 ноября 2008

Джон,

Я предполагаю, что вы используете обработчик ashx для обработчика. Если это так, убедитесь, что производные от IRequiresSessionState, например:

public class Images : IHttpHandler, System.Web.SessionState.IRequiresSessionState
{ }

Если вы не используете ashx, можете ли вы описать, что вы подразумеваете под страницей с динамическим изображением?

Josh

8 голосов
/ 29 марта 2009

в Global.asax.cs Session_Start () и Session_End () вам нужно использовать «this.Session» !! Причина этого в том, что HttpContext доступен только тогда, когда есть запрос, который обрабатывается. Вот почему вы получаете NULL на HttpContext.Current.Session!

с веб-сайта Microsoft: «Класс HttpContext: инкапсулирует всю специфичную для HTTP информацию об отдельном HTTP-запросе.»

Но не чувствую себя плохо ... я тоже влюбился в это! :)

3 голосов
/ 16 ноября 2008

Сессия не имеет отношения к входу в систему или нет.

Какое событие вы переопределяете, когда хотите получить доступ к сеансу? Сессия недоступна, пока не будет запущен AcquireRequestState.

Для получения дополнительной информации см .: http://msdn.microsoft.com/en-us/library/9ysfzy8h.aspx

0 голосов
/ 16 февраля 2009

да, вы правы Это происходит потому, что зависимость объекта может конфликтовать в случае параллельного переноса другой страницы, что может нарушить межсетевой экран между сеансами

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...