Должна ли страница с отключенным ViewState все еще проверять поле __viewstate? - PullRequest
0 голосов
/ 24 сентября 2010

У меня есть страница корзины покупок (Cart.aspx), на которой есть кнопка, которая будет (иногда) отправлять сообщения стороннему платежному шлюзу, если оплата необходима. Платежный шлюз обработает платеж и затем отправит сообщение на мой веб-сайт (Order.aspx), чтобы я мог обновить статус заказа.

Order.aspx всегда выдает недопустимую ошибку состояния представления, даже если состояние просмотра на странице отключено.

То, что происходит, - то, что Cart.aspx (у которого включено viewstate) отправляет сообщения к платежному шлюзу, и шлюз отправит это назад как часть тихого сообщения. Несмотря на то, что в Order.aspx состояние представления отключено и проверка отключена, он все равно пытается проверить поле __viewstate, которое ему дается.

Я знаю, что настройка EnableViewState=false отключит рендеринг поля __viewstate, но если это поле есть на другой странице, не должно ли оно по-прежнему пропускать проверку?

Я пытался вызвать ViewState.Clear() в событии Page_Init файла Order.aspx, но ViewState явно пуст.

Любые предложения о том, как обойти это? Я не хочу отключать ViewState на Cart.aspx (в некоторых случаях это может быть необходимо), но я не могу понять, как очистить его на Order.aspx.

1 Ответ

1 голос
/ 24 сентября 2010

Даже когда вы отключаете ViewState, ASP.NET все еще нуждается в этом. Он использует скрытое поле __viewstate для состояния просмотра, состояния управления и использует его для проверки запроса. Вы можете создать пользовательский HttpHandler и оставить заявку на этой странице. Конечно, вы должны быть осторожны с действительностью запроса. Убедитесь, что вы можете убедиться, что запрос является законным, а не от хакера.

...