В моем приложении ASP.NET 1.1 я сжимаю и заменяю скрытую переменную Viewstate альтернативным сжатым значением, хранящимся в скрытом поле с именем __VSTATE. Это работает хорошо, но в некоторых случаях отправка страницы вызывает общую ошибку «потенциально опасное значение Request.Form ...».
Я проверил значение __VSTATE, и ничто не кажется потенциально опасным. Мне удалось воспроизвести ошибку с полностью урезанной версией страницы и значением __VSTATE, как показано ниже. Нажатие на кнопку отправки вызывает ошибку. Страница работает нормально, если я изменю значение на "".
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="Dangerous.aspx.vb" Inherits="Dynalabs.Dangerous" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body MS_POSITIONING="FlowLayout">
<form id="Form1" method="post" runat="server">
<input type="hidden" id="__VSTATE" runat="server" value="Onw=" />
<asp:Button ID="btnSubmit" Runat="server" Text="Submit" />
</form>
</body>
</html>
Изменение имени поля на «MyHiddenWT» не имеет значения. Удаление runat = "server" действительно остановило ошибку, но это просто означает, что .NET проверяет только элементы управления на стороне сервера. Я также попробовал некоторые дополнительные значения и нашел следующее:
"Anw=", "Bnw=", "Cnw=", ... "Nnw=", "Onw=", "Pnw=", ... "Znw=",
«Onw =» является единственным, который вызывает проблему. Считается ли капитальный О восьмеричным?
Может кто-нибудь объяснить, почему это значение вызывает сообщение об ошибке? Я также ищу решение, но, пожалуйста, не говорите мне, чтобы удалить проверку страницы. Это то же самое, что сказать, что автомобиль с плохими тормозами можно починить, если он не ведет машину.
Заранее спасибо.