HttpWebRequest теряет файлы cookie

У меня есть клиентское приложение, которое взаимодействует с веб-службой ASP.NET, используя проверку подлинности на основе файлов cookie. (клиенты вызывают метод входа в систему, который устанавливает постоянный файл cookie, который затем повторно используется для запросов в сеансе входа в систему).

Это работало нормально в течение некоторого времени, но я начал получать отчеты об ошибках с нескольких машин, используемых новым клиентом, которые, похоже, указывают на то, что файл cookie не был успешно передан туда и обратно. (Все запросы на вход выполняются успешно, но все последующие запросы завершаются ошибкой с перенаправлением 302 на ресурс входа в систему)

Я использую CookieContainer, который я вручную прикрепляю к каждому HttpWebRequest, который я использую, чтобы гарантировать сохранение файлов cookie для каждого запроса.

Возможно ли, что на этих машинах есть какое-то «защитное» программное обеспечение, которое перехватывает/блокирует передачу файлов cookie? (Я использую SSL). Если да, то можно ли что-нибудь сделать, чтобы понять, что мешает?


person homeInAStar    schedule 23.01.2010    source источник
comment
Вы уверены, что прикрепляете один и тот же CookieContainer экземпляр к каждому HttpWebRequest? Что вы имеете в виду, говоря, что я использую для обеспечения сохранения файлов cookie при каждом запросе? Как вы это обеспечиваете?   -  person DxCK    schedule 24.01.2010
comment
не могли бы вы понюхать это общение со скрипачом?   -  person Rubens Farias    schedule 24.01.2010
comment
да, я использую тот же контейнер... он отлично работает на 99% подключаемых машин, есть лишь несколько, которые вообще не работают. (эта цитата означала, что я прикреплял один и тот же файл cookie к каждому веб-запросу, чтобы отдельные запросы использовали один и тот же набор файлов cookie.   -  person homeInAStar    schedule 24.01.2010
comment
@Rubens, я не могу легко получить скрипач или другой инструмент отслеживания на этих машинах, потому что они находятся за пределами площадки. Я добавил дополнительные журналы в приложение в надежде изолировать проблему. Я пытался воспроизвести с помощью локальных компьютеров и не смог этого сделать. Я думаю, что мой главный вопрос заключался в том, возможно ли, чтобы программное обеспечение безопасности могло таким образом возиться с моим приложением (тем более, что SSL должен защищать данные при передаче).   -  person homeInAStar    schedule 24.01.2010


Ответы (1)


Это сильно отличается от того, что программное обеспечение безопасности может даже видеть внутри вашего пакета, если вы используете SSL. Данные SSL должны быть зашифрованы еще до того, как они перейдут в пакетную форму; обычно они шифруются еще до использования send() в сокет. Если у вас нет отличного программного обеспечения для обеспечения безопасности, которое взломало шифрование SSL и может заглянуть внутрь пакета, это невозможно.

Каждый раз выходят из строя одни и те же машины? Или некоторые машины время от времени выходят из строя случайным образом, а другие — в другое время? Если последнее, возможно, что-то происходит на сервере, а не на клиентах.

person atanamir    schedule 24.01.2010
comment
Один и тот же набор из 3-х машин все время выходит из строя. Когда пользователи с этих машин переключаются на другие машины, для них все работает нормально. Я развернул некоторые обновленные средства диагностики, надеюсь, мне удастся собрать больше информации с этих машин. - person homeInAStar; 24.01.2010
comment
Вы можете включить ведение журнала трассировки для своего приложения. См. это: ferozedaud.blogspot.com/2009/08/tracing-with -systemnet.html. Затем посмотрите файл журнала, чтобы узнать, почему файл cookie не отправляется. - person feroze; 25.01.2010
comment
Кроме того, возможно ли, что между клиентом и серверами есть балансировщик нагрузки? Таким образом, если обработка M1 устанавливает cookie для ответа, но если последующий запрос направляется машине M2, то M2, очевидно, не будет знать, что делать с этим файлом cookie, и может отбросить его. - person feroze; 25.01.2010