Есть ли альтернатива многострочным текстовым полям, которые позволяют вводить большие объемы?

В настоящее время я использую многострочное текстовое поле, чтобы мои пользователи могли отправлять мне очень большие строки данных. Я заметил, что многострочные текстовые поля имеют максимальную емкость около 4 миллиардов символов или доступной памяти (в зависимости от того, что меньше). Строка, которую я использую для целей тестирования, намного меньше 4 миллиардов символов). Однако я все еще не могу отправить свои данные. Когда я нажимаю кнопку отправки, данные запрограммированы на запись в файл .txt в корневой папке, И данные печатаются на экране с использованием метки:

<asp:Label ID="lblmsg" Font-Bold="false"  style="white-space:pre;"  runat="server" Text=""></asp:Label>

В Safari я получаю требуемую ошибку проверки, прежде чем могу отправить. (Если я отключу код проверки, меня перенаправят на страницу ошибки моего веб-приложения при отправке.)

И в Chrome я не получаю ошибки проверки, я нажимаю «Отправить», ввод загружается на 100%, а затем я получаю страницу с ошибкой моего веб-приложения.

Я думаю, причиной моей ошибки может быть любая из возможных причин:

1) Либо лейбл, либо веб-приложение не могут обрабатывать столько данных на одной странице. Или же:

2) Я использую базовый план обслуживания веб-приложений Microsoft Azure для размещения своей веб-формы. Может быть, есть ограничение обработки, которое я нажимаю.

Вот код моего кода валидатора: (Хотя я не думаю, что это проблема.

<asp:RequiredFieldValidator  ValidationGroup="g1"  ControlToValidate="txtvalue" ForeColor="Red"  ID="RequiredFieldValidator1" runat="server" ErrorMessage="empty or contains more than 4,294,967,295 characters (or an amount based on available memory, whichever is smaller)."></asp:RequiredFieldValidator>
                        <br />  <asp:RequiredFieldValidator  ValidationGroup="g1"  ControlToValidate="txtvalue2" ForeColor="Red"  ID="RequiredFieldValidator2" runat="server" ErrorMessage=" empty or contains more than 4,294,967,295 characters (or an amount based on available memory, whichever is smaller.)"></asp:RequiredFieldValidator>
                        <br /> <asp:RegularExpressionValidator  ValidationGroup="g1" ForeColor="Red"  ID="RegularExpressionValidator1" runat="server" ControlToValidate="txtvalue" ErrorMessage="Invalid delimiter format. Make sure to use one consistent delimeter: (comma, space, or tab)." ValidationExpression="^\s*-?[0-9][0-9]*\s*(?=([., \t]))(?:\s*(?:\1|\r?\n)\s*-?[0-9][0-9]*)+\s*$"></asp:RegularExpressionValidator>
                        <br /> <asp:RegularExpressionValidator  ValidationGroup="g1"  ForeColor="Red" ID="RegularExpressionValidator2" runat="server" ControlToValidate="txtvalue2" ErrorMessage="Invalid delimiter format. Make sure to use one consistent delimeter: (comma, space, or tab)." ValidationExpression="^\s*-?[0-9][0-9]*\s*(?=([., \t]))(?:\s*(?:\1|\r?\n)\s*-?[0-9][0-9]*)+\s*$"></asp:RegularExpressionValidator>

Вот мой код web.config, который, я думаю, тоже подходит:

<configuration>
<system.web>
  <compilation targetFramework="4.5" />
  <!-- 50MB in kilobytes, default is 4096 or 4MB-->
  <httpRuntime maxRequestLength="1073741824" executionTimeout="3600" targetFramework="4.5" />
  <customErrors mode="RemoteOnly" defaultRedirect="mycustompage.htm"/>
  </system.web>
  <system.webServer>
  <security>
  <requestFiltering>
    <!-- 50MB in bytes, default is 30000000 or approx. 28.6102 Mb-->
    <requestLimits maxAllowedContentLength="52428800" /> 
  </requestFiltering>
  </security>
  </system.webServer>
<appSettings>
    <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
</appSettings>
</configuration>

А вот ссылка на исходные данные, которые я тестирую.


person justinpees    schedule 23.08.2017    source источник
comment
С чем вы имеете дело, что вам нужно 4 миллиарда символов для ввода на вашем сайте?   -  person mason    schedule 23.08.2017
comment
Это около 3,8 Гб. Кажется, слишком много копировать и вставлять в текстовое поле.   -  person VDWWD    schedule 23.08.2017
comment
Почему нельзя загружать файлы? Я думаю, что вы застряли в проблеме XY.   -  person Circle Hsiao    schedule 24.08.2017
comment
@VDWWD что такое около 3,8 ГБ? Если я скопирую содержимое моей матрицы в текстовый файл, это всего 5 МБ (хотя моя матрица не была 4 миллиарда символов)   -  person justinpees    schedule 24.08.2017
comment
@justinpees 4 миллиарда символов обычного текста примерно такого размера, я полагаю, и все же вы спрашиваете о большем размере ввода. 5 мб далеко не 4b символов.   -  person VDWWD    schedule 24.08.2017
comment
@VDWWD, возможно, проблема заключается в моей проверке или вычислительной мощности, выделенной для моего веб-приложения. Потому что, когда я разделяю строку размером 5 МБ пополам и вставляю каждую половину в отдельное многострочное текстовое поле, все в порядке. Но затем, когда я вставляю всю строку размером 5 МБ в ОДНО текстовое поле, я получаю ошибку проверки. Может ли проблема заключаться в вычислительной мощности моего веб-сервиса? В настоящее время я использую пакет Microsoft Azure самого низкого уровня. (бесплатно или базовый)   -  person justinpees    schedule 24.08.2017
comment
@VDWWD еще одна вещь, о которой я думаю, это то, что, возможно, проверки регулярных выражений имеют тайм-ауты по умолчанию или максимальное количество символов, которые он может проверить?   -  person justinpees    schedule 24.08.2017
comment
Пожалуйста, прочитайте Как спросить и создайте минимальный воспроизводимый пример. Без кода и фактических входных данных об этом нельзя сказать много смысла.   -  person CodeCaster    schedule 24.08.2017
comment
@CodeCaster, вам не нужно видеть код. Если вы прочитаете вопрос, вы увидите, что строка проходит проверку, когда она вставляется пополам. Но когда я вставляю строку полностью, она не проходит. И ошибка проверки возвращается, как если бы поле было пустым. Так что очевидно, что где-то есть предел. Видя, что моя строка не 4 миллиарда символов, я должен превысить лимит где-то еще. Либо регулярное выражение может проверять только определенный объем данных, либо службе веб-приложений не хватает вычислительной мощности, либо где-то истекло время ожидания. Я везде использую настройки по умолчанию.   -  person justinpees    schedule 24.08.2017
comment
Итак, покажите регулярное выражение проверки, как вы его применяете, и некоторые примеры входных данных, которые вызывают ошибку.   -  person CodeCaster    schedule 24.08.2017
comment
@CodeCaster Я предоставил соответствующий код проверки.   -  person justinpees    schedule 24.08.2017
comment
@CodeCaster Формат ввода в порядке, его длина или что-то ограничивает.   -  person justinpees    schedule 24.08.2017
comment
Послушайте, я имею в виду, что вы можете тривиально извлечь это регулярное выражение и создать System.Text.RegularExpressions.Regex, которому вы передаете ошибочный ввод из файла, например, в небольшом консольном приложении, состоящем из нескольких строк. Это MCVE. Если это все еще воспроизводит проблему, это класс .NET Regex, а не ASP.NET/валидаторы.   -  person CodeCaster    schedule 24.08.2017
comment
@CodeCaster единственный способ, которым я могу предоставить вам образец ввода, — это ссылка здесь: ccrwest.org/cover/LARGE/C_48_6_5.html Итак, когда я взял половину этого массива и поместил его в свое текстовое поле, он был передан и то же самое для другой половины. Но когда я вставляю все, я получаю сообщение об ошибке, в котором говорится, что поле пусто.   -  person justinpees    schedule 24.08.2017
comment
@CodeCaster Я думаю, мне нужно либо настроить регулярное выражение, чтобы увеличить период ожидания, либо мне нужно что-то настроить в моей службе веб-приложений Azure. Дайте мне знать, если у вас возникнет та же проблема с тем вводом, который я предоставил.   -  person justinpees    schedule 24.08.2017
comment
@CodeCaster, когда я удаляю проверку регулярных выражений и отправляю данные, меня перенаправляют на страницу ошибок моего веб-сайта по умолчанию. Значит, это должна быть проблема с ASP.net, верно?   -  person justinpees    schedule 25.08.2017
comment
@蕭為元 Я хочу предложить оба варианта   -  person justinpees    schedule 26.08.2017


Ответы (1)


Может быть, сделать кнопку, которая вызывает код JavaScript, который берет данные прямо из буфера обмена? Смотри ниже.

https://stackoverflow.com/a/6413100/3042383

person lancew    schedule 23.08.2017
comment
Можно ли по-прежнему проверять данные с помощью такого регулярного выражения? - person justinpees; 26.08.2017