ASP NET — редактор tinyMCE — ошибка 400, неправильный запрос

Я разрабатываю веб-приложение, в котором в одной из форм используется редактор tinyMCE. Пользователи приложения используют это поле ввода tinyMCE для сохранения снимков экрана и заметок. Это факт, и его нелегко исправить.

Проблема в том, что когда кто-то вставляет изображение в большой скриншот или в его слишком большое количество или что-то в этом роде, приложение не сохраняет его при отправке, но выдается ошибка 400, неправильный запрос. Кроме того, когда я добавляю дополнительный ввод в другое поле ввода, это работает. Значит, должно быть какое-то ограничение одного поля ввода.

Я попытался достичь верхнего предела, при котором он все еще работает, и это что-то близкое к 4 000 000 символов, что может быть гораздо больше байтов.

Я уже пытался найти ограничения на поле ввода HTML и ограничения tinyMCE, но не нашел ничего полезного.

Я также попытался увеличить лимит формы при запуске приложения ASPNET:

services.Configure<FormOptions>(options =>
{
   //Set the limit 
   options.MultipartBodyLengthLimit = limit;  
});

Кто-нибудь знает, что может быть причиной этого?

Обновлено: Я уже попробовал следующую конфигурацию приложения:

builder.Services.Configure<FormOptions>(options =>
{
   // Set the limit to 128 MB
   options.MultipartBodyLengthLimit = 134217728;
});

builder.Services.Configure<IISServerOptions>(options =>
{
   // Set the limit to 128 MB
   options.MaxRequestBodySize = 134217728;
});

builder.WebHost.ConfigureKestrel(serverOptions =>
{
   // Set the limit to 128 MB
   serverOptions.Limits.MaxRequestBodySize = 134217728;
});

builder.Services.Configure<KestrelServerOptions>(options => 
{
   //  Set the limit to 128 MB
   options.Limits.MaxRequestBodySize = 134217728;
});

попробуйте добавить этот код в файл program.cs: builder.Services.Configure<FormOptions>(options => { options.MultipartBodyLengthLimit = 52428800; // 50 MB }); builder.Services.Configure<IISServerOptions>(options => { options.MaxRequestBodySize = 52428800; // 50 MB }); builder.WebHost.ConfigureKestrel(serverOptions => { serverOptions.Limits.MaxRequestBodySize = 52428800; // 50 MB });

Jalpa Panchal 10.07.2024 15:43

@JalpaPanchal Хотя приложение уже находится в .NET 6, оно было перенесено из .NET 5 и использует более старую конфигурацию, поэтому оно использует IHostBuilder, но не WebApplicationBuilder. Но я попробовал настроить MaxRequestBodySize, и это не помогло. Я мог бы попробовать переопределить конфигурацию с помощью WebApplicationBuilder.

renegato 10.07.2024 19:02

@JalpaPanchal Я уже переписал конфигурацию приложения и сборщика, поэтому смог попробовать настроить все, что вы предлагали, но ничего не помогло.

renegato 11.07.2024 10:09

Не могли бы вы поделиться обновленным кодом? какой тип данных в базе данных для столбца. services. Configure<FormOptions>(options => { options.MultipartBodyLengthLimit = 52428800; // 50 MB }); services.Configure<IISServerOptions>(options => { options.MaxRequestBodySize = 52428800; // 50 MB }); services.Configure<KestrelServerOptions>(options => { options.Limits.MaxRequestBodySize = 52428800; // 50 MB });

Jalpa Panchal 12.07.2024 16:11

@JalpaPanchal Я попробовал предложенные вами конфигурации (см. раздел РЕДАКТИРОВАНИЕ). Тип данных в БД - CLOB, но я думаю, что здесь это совершенно не важно, потому что программа не падает ни с одним исключением из БД, но выдает ошибку http 400 bad request.

renegato 15.07.2024 16:40
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
5
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

РЕШЕНИЕ

Я не бросил гуглить и обнаружил, что могу настроить размер отдельного значения формы:

builder.Services.Configure<FormOptions>(options =>
{
   // Set the limit to 128 MB
   options.MultipartBodyLengthLimit = 134217728;
   options.ValueLengthLimit = 134217728;
});

Вторая строка настроек опций решает проблему.

Я также нашел решение проблемы переполнения стека и удивлен, что не увидел его в первый раз, когда пытался найти ответ.

см.: решение stackoverflow

Другие вопросы по теме