< /ul>
Для проверки у нас есть код, подобный этим: < /p>
Код: Выделить всё
var validationResult = new Lazy();
var streamReader = new StreamReader(stream);
var jsonReader = new JsonTextReader(streamReader);
var validatingReader = new JSchemaValidatingReader(jsonReader);
validatingReader.Schema = schema;
validatingReader.ValidationEventHandler += (o, a) =>
{
// simplified error handling...
Console.WriteLine(a.Message)
};
while (await validatingReader.ReadAsync(cancellationToken)){
// force reader throuth stream...
}
< /code>
Допустим, у нас есть схема, как это: < /p>
{
"type": "object",
"additionalProperties": false,
"required": [
"demoId",
],
"properties": {
"demoId": {
"type": "string",
"maxLength": 50
}
}
}
< /code>
И мы отправляем несколько непропорциональных JSON в проверку: < /p>
{
"demoId": "... Some very large string token - lets say 10M chars ..."
}
Также в соответствии с DotMemory значение, кажется, находится в памяти, как 4 раза.
, что является чем -то вроде 10M Chars * 2b * 4 приспособления ~ = 80m. /> Существует ли какой -нибудь способ справиться с этим без написания пользовательского jsontextreader или какой -то пользовательской проверки для экстремальных длинов токенов в подтвержденном json?>
Подробнее здесь: https://stackoverflow.com/questions/797 ... rge-tokens