Stanislav Berkov
Stanislav Berkov

Reputation: 6287

ASP.NET Core 8 corrupts data in response cache middleware/chrome corrupts cached response

Time to time webpage receives corrupted json text:

"\u0000\u0000\u0000 ... \u0000\u0000\u0000\u00009cd8-287f-4df0-a645-558e5cff0c63","name":"Corn","symbols":["ZCE?1","ZCE?2","ZCE?3","ZCE?4","ZCE?5","ZCE?6","F.US.ZCEZ24"]},{"id":"de2579b3-5340-40ff-9ab3-dea0dbe774dc","name":"MN Spring Wheat","symbols":["F.US.MWEU23","F.US.MWEZ23","F.US.MWEH24","F.US.MWEK24","F.US.MWEN24","F.US.MWEU24","F.US.MWEZ24"]},{"id":"e4300ad3-ae20-4ea1-ba6e-fcae7b12b41f","name":"Metals","symbols":["GCE","FGD","CPE","TGD","SIE","LDKZ","GCES2","PLE","TPL","LALZ","LZHZ","PA","PAE","LNIZ","TMG"]},{"id":"ee406e54-b082-4dce-9eb0-361467ebd4a2","name":"Corn","symbols":["ZCE?1","ZCE?2","ZCE?3","ZCE?4","ZCE?5","ZCE?6","F.US.ZCEZ24"]}]"

I.e. significant part of the response is replaced by \u0000.

I am using ASP.NET Core 8 with response caching, hosted within docker container in kuber cluster.

Controller code:

[ResponseCache(VaryByQueryKeys = ["ts", "brandName"], Duration = 2592000 /* 30 days */)]
public async Task<IActionResult> GetBrandSymbolLists(string brandName) {
    try 
    {
        AssetPackageSymbolListDto[] result = [];
        var brand = await em.Brand.GetBrandByNameAsync(brandName);
        var packageId = await em.BrandContentProfile.GetProfilePackageIdAsync(brand.ProfileId);

        if (packageId.HasValue) 
        {
            result = (await em.AssetPackageSymbolList
                              .GetByPackageIdAsync(packageId.Value))
                     .Select(l => new AssetPackageSymbolListDto(l))
                     .ToArray();
        }

        return Ok(result);
    } 
    catch (Exception ex) 
    {
        logger.LogError(ex, "Failed to get profile symbol lists");
        return StatusCode(StatusCodes.Status500InternalServerError, ex.Message);
    }
}

What can go wrong here: json serialization, server-side response cache get corrupted, client-side cache get corrupted?

Is it ok to have such long duration value?

Upvotes: 1

Views: 37

Answers (0)

Related Questions