Я вижу очень странную проблему на одной из моих производственных коробок. У нас есть приложение, размещенное в IIS 6 на одной машине с веб-сервером apache перед ним. Мое приложение использует ASP.NET членство для проверки подлинности и зависит от состояния сеанса. Сейчас я вижу проблему, когда некоторые запросы к серверу при попытке доступа к любым переменным сеанса выдадут нулевое исключение, но если запрос будет повторен, страница не найдет никаких исключений и будет работать правильно.
Я полагаю, что это как-то связано с тем, что cookie-файл Session ID либо поврежден, либо потерян по запросу, но я понятия не имею, что может вызвать это. Я полагаю, что причина в том, что ASP.NET не видит cookie и создает новый сеанс, что объясняет, почему переменные имеют значение null. Когда он получает исключение, он не может записать новый файл cookie SessionID обратно клиенту, поэтому клиент по-прежнему поддерживает исходный SessionID. Затем при отправке следующего запроса используется исходный файл cookie SessionID, который теперь ASP.NET находит и может получить состояние сеанса. Это чистое предположение, но, похоже, соответствует симптомам.
Кроме того, на этом сайте не используются никакие другие файлы cookie, кроме тех, которые требуются для членства в ASP.NET и для сеанса ASP.NET, поэтому у меня достаточно ограничений на использование файлов cookie для IE. Сайт работает нормально уже около 8 месяцев, и эта проблема только недавно появилась. Я попытался сбросить IIS и фактически перезагрузить компьютер, но, похоже, ничто не помогло.
Обновление:
Вот некоторые уточнения, которые были запрошены.
1.) Наш сервер Apache - единственное, что доступно в Интернете. Все запросы происходят через HTTPS к этой коробке. Затем окно Apache направляет все запросы, прошедшие через HTTP, на наш сервер приложений. Это делается из соображений безопасности. Мы посмотрели, возможно, проблема была в Apache, но в журналах Apache, похоже, нет ошибок.
2.) Пустое исключение возникает при попытке доступа к объекту, сохраненному в сеансе, который приложение ожидает там, в отличие от исключения, возникающего с самим объектом сеанса.