Это то, что в настоящее время камера отправляет на наш прослушивающий сервер (обратите внимание на 0 байтов). image) :
https://pastebin.com/raw/z5Bzjthh
Я не знаю, почему он пытается отправить пустое изображение - но мне все равно, потому что для меня важны только данные - это фактический номерной знак.
Это конечная точка теста, которую мы пытаемся использовать для получения этих данных:
Код: Выделить всё
[HttpPost]
[Route("/camera/event")]
[SwaggerOperation("EventReceived")]
[SwaggerResponse(statusCode: 200, type: typeof(Response), description: "OK")]
public async Task EventReceived()
{
try
{
var path = @$"c:\Temp\camera-{DateTime.UtcNow:yyyy-MM-dd-HH-mm-ss-fff}-data.log";
using var fileStream = System.IO.File.Create(path);
await Request.Body.CopyToAsync(fileStream);
return $"File {path} created";
}
catch (Exception ex)
{
_log.Error($"Error parsing request: {ex.Message}");
return $"Error parsing request: {ex.Message}";
}
}
Я не могу воспроизвести эту проблему без реальной камеры — я даже пытался это сделать HTTP-сессия вручную через Putty, отправка тех же данных - и все работает.
Я тоже пробовал:
Код: Выделить всё
var boundary = Request.GetMultipartBoundary();
var reader = new MultipartReader(boundary, HttpContext.Request.Body);
var section = await reader.ReadNextSectionAsync()
await section.Body.CopyToAsync(fileStream);
Насколько я тестировал, каждая попытка прочитать Request.Body вызывает это исключение. Даже вручную прочитав первый байт из потока:
Код: Выделить всё
await Request.Body.ReadAsync(buffer, 0, 1)
Не могу понять, почему прямое подключение к webapi заканчивается исключением, а подключение через прокси-сервер Fiddler волшебным образом это исправляет. Любая помощь?
Подробнее здесь: https://stackoverflow.com/questions/792 ... quest-body