HttpContext.Current.Session является нулевым запрашивающим изображениями. Зачем?

Я строю приложение ASP MVC.

Когда я запрашиваю маршрут к контроллеру, например:

http://myserver/sales/id/5

объект сеанса HttpContext.Current.Session работает отлично.

Однако, когда я запрашиваю изображение или скрипт, например:

http://myserver/Scripts/jquery-1.4.1.js

объект сеанса HttpContext.Current.Session является null

Как я могу отличить эту ситуацию от другой, когда нет "реальной" сессии (например, первый вход в систему)?

2 ответа

Решение

Зачем вам нужен сеанс для извлечения статического файла?

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

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

@Oded прав, это оптимизация в asp.net. Если вам нужно, чтобы сеанс был доступен, вам понадобится запрос к обработчику, который указал, что ему нужен сеанс. Если вы пишете свой собственный обработчик, то он просто должен реализовать интерфейс маркера IRequiresSessionState.

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

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