Сбой формы ASP.NET HTML - PullRequest
       12

Сбой формы ASP.NET HTML

0 голосов
/ 02 июля 2010

Мы только что открыли новую страницу ASP.NET, которая показывает странную ошибку.Ошибка появляется на следующей странице, как будто данные не в форме.Когда пользователь возвращается, обновляет страницу и повторно отправляет форму, он работает просто отлично.
Немного предыстории, этот источник обслуживается из виртуального каталога для 8 веб-серверов с балансировщиком нагрузки и IIS-6.Версия VB.NET - 2005. Проблема, по-видимому, не зависит от браузера (это происходит как в IE, так и в Firefox).Объекты формы являются чистым HTML, потому что они полностью динамически генерируются и форматируются на основе ответов с предыдущих страниц, и это преобразование из ASP.

Заглушка формы с ошибочными объектами выглядит следующим образом:

<FORM ACTION="NextPage.aspx" METHOD="post" ID="frmAddComments" NAME="frmAddComments">
    <SELECT NAME="SubReason1" ID="SubReason1">
        <OPTION VALUE="">Select A Reason For This Return</OPTION>
        <OPTION VALUE="BP11">Arrived Defective</OPTION>
        <OPTION VALUE="BP12">Not Compatible</OPTION>
        <OPTION VALUE="BP13">Stopped Working</OPTION>
    </SELECT>
    <TEXTAREA NAME="comment1" ID="comment1" ROWS="3" COLS="45"></TEXTAREA>
    <SELECT NAME="SubReason2" ID="SubReason2">
        <OPTION VALUE="">Select A Reason For This Return</OPTION>
        <OPTION VALUE="BP11">Arrived Defective</OPTION>
        <OPTION VALUE="BP12">Not Compatible</OPTION>
        <OPTION VALUE="BP13">Stopped Working</OPTION>
    </SELECT>
    <TEXTAREA NAME="comment2" ID="comment2" ROWS="3" COLS="45"></TEXTAREA>
    <INPUT TYPE="submit" VALUE="Continue">
</FORM>

Я в первую очередь ищу, какие вопросы задавать.


Редактировать Вопросы заставили меня задуматься - в форме есть несколько зашифрованных элементов, которыеполучил и подтвердил правильно.Это причина того, что они не в заглушке.Любой сбой будет перенаправлен на страницу сбоя, и это не происходит.Пустые только незашифрованные данные.


Редактировать Шифрование представляет собой комбинацию RC4, MD5 и DES-3 - все зашифрованные поля отображаются в шестнадцатеричном виде, как имя / идентификатор изначение.Любой сбой в сопоставлении шифрования / дешифрования приведет к отображению ошибки на странице.Этого не происходит.


Редактировать На этой странице также показана проблема с ViewState.Теперь он выключен.
Редактировать Дамп транзакции показывает, что сбои серверов не меняются.Я показываю только одну запись со сменой серверов.

Ответы [ 2 ]

1 голос
/ 10 июля 2010

У меня была похожая проблема, для выяснения которой потребовалось несколько дней.Я портировал приложение из ColdFusion на .NET 3.5, и страница, казалось, отсылала обратно, но большая часть запроса была потеряна.

Проблема заключалась в том, что элемент формы, который не был помечен тегом runat="server", был вложен в тег формы, помеченный runat="server".

Мое разрешение было простым: Iудалил основанный на html элемент формы и использовал основную форму.Ваша проблема звучит немного иначе, потому что вы динамически строите форму.Из моего исследования за это время я узнал, что элементы формы не должны быть вложенными и что только один на страницу может быть на стороне сервера.

В журнале MSDN есть статья с несколькими вариантами отображения нескольких форм на одной странице.page: http://msdn.microsoft.com/en-us/magazine/cc164151.aspx#S4

Однако, если ваши сгенерированные формы довольно просты после публикации, вы можете подумать о создании элементов управления и использовании свойства PostbackUrl элемента управления asp:Button для установки страницы, на которуюотправка должна быть отправлена.

Пример, взятый из MSDN :

  <form id="form1" runat="server">

    <h3>Button.PostBackUrl Example</h3>

    Enter a value to post:
    <asp:textbox id="TextBox1" 
      runat="Server">
    </asp:textbox>

    <br /><br />

    <asp:button id="Button1" 
      text="Post back to this page"
      runat="Server">
    </asp:button>

    <br /><br />

    <asp:button id="Button2"
      text="Post value to another page" 
      postbackurl="Button.PostBackUrlPage2cs.aspx" 
      runat="Server">
    </asp:button>

  </form>

Обратите внимание, как нажатие первой кнопки отправляет сообщение обратно на текущую страницу и нажатие второйКнопка отправляет обратно на Button.PostBackUrlPage2cs.aspx и содержит значение, введенное в текстовое поле в объекте запроса.

1 голос
/ 02 июля 2010

Вопросы, которые я хотел бы задать, включают:

  1. Как вы поддерживаете состояние? Вы используете внутрипроцессные сессии? Я спрашиваю, потому что пользователи, вероятно, отскакивают от одного сервера к другому. Вы пытались перейти на сеансы на основе файлов cookie?

  2. Можете ли вы поставить регистратор на страницу загрузки, чтобы сохранить все из объекта запроса. В частности, все поля формы представлены?

  3. Что именно является сообщением об ошибке?

EDIT
Если приходят какие-то значения, то это странная ситуация. Как вы расшифровываете данные? и, опять же, что находится в самом объекте запроса? Как вы получаете доступ к полям, чтобы определить, что их "там нет"? В какой точке конвейера происходит дешифрование? Это искажение остальной части объекта запроса?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...