Проблема сеанса без файлов cookie MVC2 с использованием POST

По какой-то причине при включенном сеансе без файлов cookie в MVC2 идентификатор сеанса в строке запроса сбрасывается при каждой публикации формы. Есть ли специальный маршрут, который нужно настроить, чтобы это работало?

Есть ли еще какие-то ошибки, о которых мне нужно знать?

Благодарю.

3 ответа

Решение

Сессии без файлов cookie работают в MVC2, однако вы не можете использовать POST в качестве метода отправки формы. Он поддерживает только использование GET. Кроме того, все пути действий в формах необходимо обновить до следующего шаблона:

<form action="<%= Response.ApplyAppPathModifier("/SomeController/SomeAction") %>" method="get">

Это обеспечит автоматическую передачу идентификатора сеанса. Эта строка необходима в файле web.config для включения сеансов без файлов cookie:

<system.web>
    <sessionState cookieless="true" regenerateExpiredSessionId="true"></sessionState>
</system.web>

С этими двумя изменениями все работало!

Если вы заинтересованы в том, чтобы обойти POST для работы с сеансом Cookieless и MCV2, я нашел следующую страницу. Включение POST в Cookieless ASP.NET Это не очень подходило для моего проекта, потому что я не могу использовать JavaScript.

Сессии без файлов cookie не поддерживаются в MVC 2 и вряд ли будут поддерживаться в будущих версиях MVC. См. http://forums.asp.net/p/1517391/3738312.aspx для получения дополнительной информации.

Бюллетень по безопасности (Майкрософт) MS10-070 - Важное: Уязвимость в ASP.NET делает возможным раскрытие информации (2418042)

Если установлено это обновление, проверьте этот KB.

Настройки реестра Http.sys для IIS

Использовать сеанс без cookie и аутентификацию формы, автоматически вставлять этот ("/(S(...)F(...))/") сегмент пути URL. UrlSegmentMaxLength по умолчанию - 260, но MS10-070 установил среду над этим. Я думаю, что это результат для отступления оракула.

Надеюсь, это поможет!

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