Сделайте HTTPHandler (ashx) для размещения файла cookie сеанса в ASP.NET

Как я могу сделать HTTPHandler в файле ashx РАЗМЕСТИТЬ SessionCookie, управляемый ASP.NET? Кажется, что вызов ashx-файла не помещает cookie, поэтому сеанс не может поддерживаться.

Предыстория: я собираюсь написать оболочку веб-службы на основе HTTP. Разные клиенты вызывают URL-адрес, который я им предоставляю с заданными параметрами. Я проверяю учетные данные, вызываю стороннюю веб-службу и возвращаю измененный результат клиенту. Сторонний поставщик веб-услуг требует по контракту идентификатор сеанса для каждого звонящего клиента.

Решение: HTTPHandler кажется лучшим выбором. Итак, я создал проект веб-сайта. К сожалению, прямой вызов ashx-File, похоже, не добавляет файл cookie сеанса к ответу, поэтому новый идентификатор сеанса создается для каждого вызова от одного и того же клиента.

Я сделал следующее по теме:

  • Реализованы интерфейсы разметки IRequiresSessionState и / или IReadOnlySessionState.
  • Добавлен <sessionState mode="InProc" cookieless="false" timeout="20" /> в web.config
  • Сохраните что-нибудь в состоянии сеанса в файле Global.asax в Session_Start-Method HttpContext.Current.Session ("init") = 0

Различные попытки, которые работают, но их следует избегать:

  • Перед вызовом файла ashx вызов файла Default.aspx помещает cookie сеанса, поэтому сеанс сохраняется.
  • Реализуйте «собственный» сеанс с базой данных и отметкой времени.

Версия: IIS 6.0


person Anytoe    schedule 01.05.2012    source источник
comment
Что это за версия IIS и можете ли вы поделиться соответствующими частями вашего web.config (system.web)?   -  person Drew Marsh    schedule 04.05.2012


Ответы (1)


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

person Drew Marsh    schedule 04.05.2012
comment
Я пробовал каждую комбинацию, извините за то, что она не конкретна. Я думаю, проблема в том, что cookie вообще не устанавливается. Если я вызываю вручную веб-сайт Default.aspx, сеанс работает так, как предполагалось для HTTPHandler. - person Anytoe; 04.05.2012
comment
Хорошо, хорошо ... мы продолжим работать над этим, но вам определенно нужно реализовать только IRequireSessionState. Я попрошу подробностей в комментарии к вашему вопросу. - person Drew Marsh; 04.05.2012