Net5.0 - Chyba při přijímání diferent velikosti byte pole mezi Microservices

0

Otázka

Mám 2 Microservices (V jednoduchý způsob, jak sdílet to), tady je kód od "zdroje" Microservice

    [HttpGet]
    [Route("resource")]
    public async Task<byte[]> LocateResource(Guid Id)
    {
        if (Id== Guid.Empty)
        {
            throw new Exception("Invalid Id");
        }

        var (content, message) = await _repo.LocateResource(Id);
        if (!message.Equals("Success"))
        {
            throw new Exception(message);
        }
        // content.lenght equivalent to 56129
        return content;
    }

a pak je Zde kód pro "Klienta"

    public async Task<byte[]> ReadFile(Guid Id)
    {

        var response = await _httpClient.GetAsync($"{_urlOptions.Value.ReadFileEndpoint}?Id={Id}");
        response.EnsureSuccessStatusCode();
        var file = await response.Content.ReadAsByteAsync();

        // file.lenght equivalent to 74000
        return file;

}

Problém je, že posílám 56129 bajtů a přijímám 74000 bajtů na "Klienta", a vypadá to, že tam není žádné vysvětlení pro toto chování. Může mi někdo sdělit další podrobnosti, prosím?

.net-5 arrays c#
2021-11-23 18:32:36
2

Nejlepší odpověď

2

Měl by ses vrátit reakce typu FileContentResult. Například:

using Microsoft.AspNetCore.Mvc;

namespace WebApplication2.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class TestController : ControllerBase
    {
        [HttpGet("file")]
        public IActionResult GetFile()
        {
            var result = new byte[] { 1, 2, 3, 4, 5, 6, 7 };
            return this.File(result, "application/octet-stream");
        }
    }
}

File je pomocná metoda definovaná v ControllerBase třídy.

Ve výchozím nastavení ASP.NET serializuje obsah JSON a binární data je zakódován pomocí base64. To je důvod, proč se dostanete větší reakci pak můžete očekávat. Výsledek z mého příkladu vypadá takto při kódování a serializovat: "AQIDBAUGBw==".

2021-11-23 19:47:12
0

ReadAsByteAsync skutečně existují v HttpContent. Doporučuji vám mít vlastní reakci třída, která zpracovává konverze

2021-11-23 18:51:02

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................