2008-11-16 2 views
14

У меня есть специальный объект безопасности, который я установил в global.asax для текущего потока, и все хорошо, проблем нет.Asp.net System.Web.HttpContext.Current.Session null в global.asax

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

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

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

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

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

ответ

25

Джона,

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

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

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

Джош

3

Сессия не имеет ничего общего с входом в систему или нет.

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

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

+1

Сессия имеет все, что связано с моим обычным бизнес-принципом. Проблема заключается в том, что сеанс имеет значение null только для этой одной страницы, 50 или около того других в этом большом приложении не проявляют этой проблемы. Я получаю доступ к сеансу из Application_PostAuthenticateRequest, где это обычно не проблема. – JohnC 2008-11-16 01:55:53

+1

Ради этой проблемы, просто игнорируйте всю основную часть бизнеса, основная проблема заключается в том, что Session имеет значение null только для этого типа страницы. – JohnC 2008-11-16 01:56:52

0

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

8

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

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

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

Смежные вопросы