2009-08-21 2 views
1

Мое веб-приложение ASP.NET отлично работает в Internet Explorer, но в Firefox и Chrome у меня есть проблема, когда определено значение HttpContext.Current, но HttpContext.Current.Session равно null. Вероятно, ошибка вызвана тем фактом, что объект Session обращается к раннему жизненному циклу страницы ASP.NET. Но так как веб-сайт действительно будет доступен через Internet Explorer, я надеюсь найти быстрое и приемлемое решение. Возможно, что-то вдоль этих линий:Могу ли я создать HttpContext.Current.Session программно, если он равен нулю?

if (HttpContext.Current.Session == null) 
{ 
    // Create Session - but how? 
} 

Так что вопрос: Могу ли я создать объект Session программно в ASP.NET?

Редактировать: Ошибка была связана с файлом .designer, который был не синхронизирован. Странно, но теперь это работает.

ответ

2

Я думаю, что проблема в том, что IE является единственным браузером, принимающим cookie сеанса, который использует ASP.NET для сохранения идентификатора сеанса.

Или убедитесь, что все браузеры принимают куки или настроить приложение ASP.NET для использования cookieless sessions.

Ответ на ваш вопрос, однако, нет, вы не можете создать сеанс самостоятельно. ASP.NET должен сделать это от вашего имени.

+0

Спасибо. Думаю, мне придется копать глубже, чтобы решить эту проблему. Это довольно непротиворечиво, и мне только что сказали, что это, вероятно, происходит только при использовании внутреннего веб-сервера Visual Studio, что делает его недействительным на производственном сервере. –

+3

В контексте самого веб-приложения вы не можете создать контекст/сеанс, но есть способы сделать это, если вам это нужно для модульного тестирования. Они уродливы, и я, если возможно, издевался над HttpContextBase/HttpSessionStateBase. Просто подумал, что добавлю это для завершения, если кто-то доберется до этого вопроса/ответа в контексте модульного тестирования вместо приложения. – tvanfosson

+0

@Jan - иногда сеанс перепутался, если вы вносите изменения в приложение без перезапуска веб-сервера. Я часто останавливаю фактический веб-сервер (щелкните правой кнопкой мыши на значке панели задач), когда вижу, что сеансовые беспорядки запускаются в отладчике. Обычно очищает связанные с сеансом вещи. – tvanfosson

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