На главную

.:: Меню ::.
Новости
Программы
Статьи
Полезные ссылки

Ошибка "Request Object, ASP 0107 (0x80004005)" при сабмите формы

Разделы Статьи / ASP / Ошибки и их решения /

Назад

Признаки ошибки:

Когда Вы пересылаете через форму большой объем данных в Microsoft Internet Information Services 5.0, Вы можете получить следующее сообщение об ошибке:

Error Type:

Request object, ASP 0107 (0x80004005)

The data being processed is over the allowed limit.

Когда Вы пересылаете через форму большой объем данных в Microsoft Internet Information Services 4.0, Вы можете получить следующее сообщение об ошибке:

Request object error 'ASP 0107 : 80004005'

Stack Overflow

/projectname/page.asp, line XX

The data being processed is over the allowed limit.

Причина:

Предел размера каждой области формы, которую Вы получаете через объект Request, - 102 399 байтов. Ошибка происходит, когда Вы превышаете этот предел.

Решение:

Чтобы решать эту проблему, используйте один из следующих методов:

  • Вместо чтения данных форм через Request.Form collection используйте Request.BinaryRead (Request.TotalBytes).
  • Используйте схему File Upload, например такую как Microsoft Posting Acceptor.
  • Разбейте переменные формы HTML на несколько полей формы прежде, чем будет произведен submit. 102 399-байтовый предел установлен для каждого поля формы, поэтому Вы можете получить из одного большого поля несколько полей по 102399 байт.  Следующий пример иллюстрирует это:

//разбивка с помощью скрипта Javascript
<FORM method=post action=/?scid=LargePost.asp&fp=1 name=theForm onsubmit="BreakItUp()">
<Textarea rows=3 cols=100 name=BigTextArea>A bunch of text...</Textarea>
<input type=submit value=go>
</form>

<SCRIPT Language=JavaScript>
function BreakItUp()
{
  //Set the limit for field size.
  var FormLimit = 102399

  //Get the value of the large input object.
  var TempVar = new String
  TempVar = document.theForm.BigTextArea.value

  //If the length of the object is greater than the limit, break it
  //into multiple objects.
  if (TempVar.length > FormLimit)
  {
    document.theForm.BigTextArea.value = TempVar.substr(0, FormLimit)
    TempVar = TempVar.substr(FormLimit)

    while (TempVar.length > 0)
    {
      var objTEXTAREA = document.createElement("TEXTAREA")
      objTEXTAREA.name = "BigTextArea"
      objTEXTAREA.value = TempVar.substr(0, FormLimit)
      document.theForm.appendChild(objTEXTAREA)

      TempVar = TempVar.substr(FormLimit)
    }
  }
}
</SCRIPT>

Для извлечения данных из формы в ASP-странице используйте следующий код:

<%
Dim BigTextArea
For I = 1 To Request.Form("BigTextArea").Count
  BigTextArea = BigTextArea & Request.Form("BigTextArea")(I)
Next
%>

Оригинал статьи на англ. языке

Новости сайта

Друзья сайта
Русский сайт системы KooBoo CMS

PROИТ - Office 365, AD, Active Directory, Sharepoint, C#, Powershell

Хостинг предоставлен VEDU.RU - Поволжским
Образовательным
Порталом





 © Центр ИТ, СИОТО, 2002-2009. Разработчики: webmaster(a)vedu.ru