Я разрабатываю веб-приложение, в котором в одной из форм используется редактор 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;
});
@JalpaPanchal Хотя приложение уже находится в .NET 6, оно было перенесено из .NET 5 и использует более старую конфигурацию, поэтому оно использует IHostBuilder, но не WebApplicationBuilder. Но я попробовал настроить MaxRequestBodySize, и это не помогло. Я мог бы попробовать переопределить конфигурацию с помощью WebApplicationBuilder.
@JalpaPanchal Я уже переписал конфигурацию приложения и сборщика, поэтому смог попробовать настроить все, что вы предлагали, но ничего не помогло.
Не могли бы вы поделиться обновленным кодом? какой тип данных в базе данных для столбца. 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 });
@JalpaPanchal Я попробовал предложенные вами конфигурации (см. раздел РЕДАКТИРОВАНИЕ). Тип данных в БД - CLOB, но я думаю, что здесь это совершенно не важно, потому что программа не падает ни с одним исключением из БД, но выдает ошибку http 400 bad request.
РЕШЕНИЕ
Я не бросил гуглить и обнаружил, что могу настроить размер отдельного значения формы:
builder.Services.Configure<FormOptions>(options =>
{
// Set the limit to 128 MB
options.MultipartBodyLengthLimit = 134217728;
options.ValueLengthLimit = 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 });