Я помогаю в разработке веб-приложения с относительно высоким трафиком, использующего ASP.NET WebForms. Хотя наше представление viewstate относительно невелико, в настоящее время оно нам требуется.
При развертывании изменений на главной главной странице мы часто приводим к тому, что подключенные в настоящее время пользователи получают сообщение об ошибке при следующем выполнении запроса POST. Причина этого заключается в том, что дерево состояния представления, которое существует в их запросе POST, больше не соответствует тому, что сервер ожидает публикации. Поскольку мы являемся веб-приложением, многие наши страницы выполняют POST.
Полная ошибка, конечно:
Не удалось загрузить viewstate. Дерево управления, в которое загружается состояние просмотра, должно соответствовать дереву управления, которое использовалось для сохранения состояния просмотра во время предыдущего запроса. Например, при динамическом добавлении элементов управления элементы, добавленные во время обратной передачи, должны соответствовать типу и расположению элементов управления, добавленных во время первоначального запроса.
Естественно, это очень расстраивает наших пользователей. На данный момент мы стараемся:
- Минимизация изменений на главной странице (по крайней мере, изменений, связанных с серверными элементами управления)
- Развертывание в периоды низкого трафика
Я думал о том, чтобы сделать трюки с привязкой к балансировщику нагрузки, чтобы попытаться заставить новых пользователей регистрироваться во вновь развернутой версии, в то же время сохраняя в настоящий момент пользователей, вошедших в старую версию, - но это кажется чрезвычайно сложным и поддерживая несколько баз кода в рабочем состоянии. действительно, куда я хочу пойти.
Я ценю, что технология на самом деле не наш друг здесь, но просто удивляюсь, есть ли у кого-нибудь какие-либо советы или методы, которые они используют для смягчения этой проблемы.