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

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

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

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

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

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
14
0
27 411
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Сессия не имеет ничего общего с тем, вы вошли в систему или нет.

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

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

Сессия имеет прямое отношение к моему индивидуальному бизнес-принципу. Проблема заключается в том, что сеанс является нулевым только для этой одной страницы, около 50 или около того других в этом большом приложении не проявляют этой проблемы. Я получаю доступ к сеансу из Application_PostAuthenticateRequest, где обычно это не проблема.

JohnC 16.11.2008 04:55

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

JohnC 16.11.2008 04:56

Джон, что это за страница? Это aspx? или ашх?

JoshBerke 16.11.2008 05:11
Ответ принят как подходящий

Джон,

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

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

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

Джош

Привет, Джош, ты сейчас мой любимый человек! :) Нет, я использовал стандартную страницу aspx, потому что все примеры обработчиков, упомянутых с использованием расширения файла и изменений конфигурации, вообще не знали об ashx, пробовали это, и это действительно требовало производной, которую вы упомянули. Прекрасно работает. Ваше здоровье!

JohnC 16.11.2008 10:44

Хех потрясающе! Я люблю обработчиков Ashx. Я использовал один для извлечения изображений из базы данных, которая действительно хорошо работает. Я также обнаружил, что если вы выполняете POX Service, то ashx работает очень хорошо.

JoshBerke 17.11.2008 23:20

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

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

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

Но не расстраивайтесь ... Я тоже влюбился в это! :)

Другие вопросы по теме