Asp.net System.Web.HttpContext.Current.Session null в global.asax - программирование
Подтвердить что ты не робот

Asp.net System.Web.HttpContext.Current.Session null в global.asax

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

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

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

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

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

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

4b9b3361

Ответ 1

Джон

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

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

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

Джош

Ответ 2

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

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

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

Ответ 3

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

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

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

Ответ 4

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