Ядро asp.net с iis - https - при загрузке данных с помощью ajax соединение теряется
У меня есть веб-приложение, которое позволяет загружать изображения с камеры, оно публикует их с помощью ajax в объекте Blob. я заметил, что когда я использовал приложение со своего телефона с камерой высокого разрешения, в конечном итоге загрузка перестала работать. Я сделал тестовую страницу, которая просто загружает пустой массив данных в BLOB-объекте, чтобы проверить проблему, и обнаружил, что в конечном итоге соединение прерывается, и в конце концов сервер сообщает о его сбросе.
Я не знаю, куда мне покопаться, чтобы понять, почему это происходит. Еще немного информации: сервер aspnetcore (2.0) работает с iis. У меня нет проблемы при его локальном запуске, только когда он работает на сервере бесплатного уровня AWS, где я его размещаю (t2.micro). (я пробовал и сервер Ubuntu с nginx, и сервер Windows с iis, и у меня возникли проблемы с обоими) (я думаю, что оба из них используют обратный прокси-сервер, так что это может быть так), он использует ssl (сертификат от позволяет шифровать) и проверку подлинности cookie
это клиент, который делает звонок из JavaScript
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
$("a.button").click(function () {
var size = parseInt($("input.size")[0].value);
var byteArray = new Uint8Array(size);
var blob = new Blob([byteArray], { type: "application/octet-stream" })
var fd = new FormData();
fd.append("blob", blob);
$(".message").text("sending " + size + " bytes");
$.ajax({
type: "POST",
url: "/upload/test",
data: fd,
processData: false,
contentType: false
}).done(function (responsedata) {
$(".message").text(responsedata);
}).fail(function () {
$(".message").text("failed");
});
});
})
</script>
</head>
<body>
<input class="size" value="1024">
<div class="message"></div>
<a class="button" href="#">test</a>
</body>
</html>
в поле ввода указывается, сколько байтов нужно отправить при нажатии кнопки. чтобы воспроизвести проблему, я установил его на 2000000, и он будет работать первые 3 или 4 раза, но затем в конечном итоге он будет зависать, и ни одно обещание никогда не сработает (выполнено или не выполнено).
на сервере конец журнала чтения выглядит так, когда он зависает
Код [xxx] истек миллисекунды запроса, он читает около 1024 байтов в цикле, пока не прочитает весь запрос.
в конце вы можете увидеть 8-секундный промежуток между чтениями, затем вскоре после этого соединение будет сброшено.
Любое понимание или совет приветствуется.