Ameer Salah Ответов: 2

Не удается прочитать большой размер данных $.ajax from.net контроллер


Я столкнулся с проблемой чтения больших данных с помощью ajax-запроса: от javascript до C#.

Записи :

1 - я установил maxRequestLength="52428800" и maxAllowedContentLength="52428800"

2 - запрос успешно работал для обычных данных.

И я все еще получаю: 500 (Внутренняя ошибка сервера) для случая больших данных. И все это нормально для небольшого или нормального размера данных.

Что я уже пробовал:

1 - я установил maxRequestLength="52428800" и maxAllowedContentLength="52428800"

2 - запрос успешно работал для обычных данных.

F-ES Sitecore

Что происходит, когда вы пытаетесь? Это тайм-аут, переполнение, ошибка? Вызывается ли ваш код контроллера ok и идет ли он до конца? Вы получаете ошибки в консоли браузера? Вы смотрели на вызов на вкладке Сеть инструментов браузера?

Ameer Salah

И я все еще получаю: 500 (Внутренняя ошибка сервера) для случая больших данных. И все в порядке для небольшого или нормального размера данных.

F-ES Sitecore

Это означает, что ваш серверный код, вероятно, выдает ошибку. Если вы посмотрите на ответ на вызов на вкладке Сеть инструментов браузера, то он часто содержит больше информации об ошибке (при условии, что у вас отключены дружественные ошибки). Также отладьте вызов сервера, чтобы увидеть, что там происходит.

Ameer Salah

хорошо, но это происходит только для больших запросов.

MadMyche

Насколько велик сам файл? Сколько времени требуется, чтобы выбросить ошибку? Что регистрируется в журнале службы w3? Вам действительно нужен AspNet, чтобы иметь возможность принимать загрузку 50 ГБ?

F-ES Sitecore

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

Ameer Salah

ребята, файл всего 4 МБ, но при разделении его информации на массив json будет получаться большой json, также запрос займет 40,1 сек при использовании postman.

2 Ответов

Рейтинг:
2

Dave Kreskowiak

500 ошибок означают, что ваш серверный код разбился или иным образом выдал ошибку. Если вы не пройдете несколько диагностических шагов по своему собственному коду и не предоставите дополнительную информацию в своем вопросе, никто не сможет сказать вам, что происходит не так с тем, что вы разместили в своем вопросе.

Мы работаем только с тем, что вы задали в вопросе, и вы вообще не предоставили никакой полезной информации в своем вопросе.

Вам придется запустить свой код в отладчике и/или добавить в него протоколирование, чтобы показать его прогресс в файле или базе данных.

Вы заглядывали в журнал событий приложений серверов? Проверяли ли вы журналы IIS на наличие каких-либо сообщений, связанных с аварией?


Ameer Salah

Привет Дэйв,
Итак, в основном мы пытаемся получить информацию из какого-то файла на сервере, который имеет 3 или 2 версии, а затем делаем слияние между версиями.
для того чтобы отобразить данные файла мы получаем данные в json когда файл меньше одного Мб все в порядке но когда файл больше 2М будет вызвана внутренняя ошибка сервера 500

Dave Kreskowiak

Хорошо, и это ничего не значит для ошибок. Ваш код делает что-то не так, и поскольку мы не можем видеть код, все равно никто не может сказать вам ничего полезного, кроме как запустить его под отладчиком.

Рейтинг:
1

Abdelrahman Ismaeel Hegazy

попробуйте пыльник подключение к интернету без какого-либо администрирования домена


Dave Kreskowiak

Ты что, шутишь? Как это влияет на ошибки в коде, запущенном на сервере?

Ошибки HTTP 500 всегда связаны с кодом или конфигурацией на сервере.

Ameer Salah

Аякс:
функция saveTheResult() {
checkAndCompareEditorToArrayVal();

ВАР contentValue = редактор.метод getValue().заменить(/&ЛТ;нет ГРЦ линии&ГТ;/г, '\п');;
var uri = '../../../ThreeWayMerge/SaveTheResult';
$.Аякс({
тип: "пост",
адрес: Ури,
processData: false,
contentType: 'application/json',
сведения: в формате JSON.преобразовать в строки({
'mergeSessionId': window.mergeSessionId,
'fileId': окно.идентификатор файла,
'content': contentValue,
'savedResult': в формате JSON.преобразовать в строки(KdiffResult),
}),
успех: функция (данные) {
if (data.status_code == 200) {
окно.местоположение.href = absolute("/merge_sessions/" + window.mergeSessionId);
initEditors(правда);
}
}
}).fail(функция () {
showStatusModal ("что-то пошло не так", "произошла неожиданная ошибка. Пожалуйста, попробуйте еще раз позже. Если ошибка повторится, обратитесь в службу поддержки.');
});
}

Контроллер:
[HttpPost]
публичная асинхронная система.Нарезание резьбы.Задачи.Задачу<actionresult&ГТ; SaveTheResult(строка идентификатор файла, строку mergeSessionId, содержимое строки, строки savedResult)
{
var client = новый HttpClient();
TempData["загружаемый"] = "нет";
// Проверка конфликта слияний на стороне сервера
var response = новый словарь<string, string>();
если (содержание.Содержит("<Merge conflict>"))
{
ответ.добавить("msg", "пожалуйста, разрешите конфликты раньше");
ответ.добавить("код", "500");
return Json(response, JsonRequestBehavior.AllowGet);
}
var values = новый словарь<string, string>
{
{ "содержание", content},
{ "diff_final_result", savedResult},
};
var SaveResutInfo = await requestHelper.DoPostRequest(строка.Формат(BEServerUrls.SaveFileContentUrl, mergeSessionId, fileID), значения);
TempData["загружаемый"] = "да";
возврат Json(SaveResutInfo, JsonRequestBehavior.AllowGet);
}