使用 JsonDocument 保留原始文档的格式
Persist formatting of original document with JsonDocument
环境 .net 6 最小 api
app.MapPost("/HandleStatusUpdate", async (System.Text.Json.JsonDocument jsonBody, [FromServices] IMediator mediator, Microsoft.AspNetCore.Http.HttpContext context) =>
我正在接受来自各种来源的 webhook 请求,并且需要根据我从发送请求的每个服务获得的静态密钥(静态密钥 + 消息 = 请求 header sha 值)验证消息.
我遇到的问题是,当我将 Json 文档转换为字符串时:
using (var stream = new MemoryStream())
{
var writer = new Utf8JsonWriter(stream);
jdoc.WriteTo(writer);
writer.Flush();
return Encoding.UTF8.GetString(stream.ToArray());
}
这不是 re-creating 发送的确切消息(它删除了空格),因此验证步骤失败。我已经验证,如果我接收发送的原始消息并 运行 通过验证步骤,它确实有效。
这是一个正在发送的 JSON 字符串,内容类型为 application/json。因为,我接受来自各种来源的东西,我无法创建一个我可以序列化的 class。
我不认为有什么方法可以让 JsonDocument 保持传入的 Json 文档的格式,那么有没有更好的方法来处理这个问题?
环境 .net 6 最小 api
app.MapPost("/HandleStatusUpdate", async (System.Text.Json.JsonDocument jsonBody, [FromServices] IMediator mediator, Microsoft.AspNetCore.Http.HttpContext context) =>
我正在接受来自各种来源的 webhook 请求,并且需要根据我从发送请求的每个服务获得的静态密钥(静态密钥 + 消息 = 请求 header sha 值)验证消息.
我遇到的问题是,当我将 Json 文档转换为字符串时:
using (var stream = new MemoryStream())
{
var writer = new Utf8JsonWriter(stream);
jdoc.WriteTo(writer);
writer.Flush();
return Encoding.UTF8.GetString(stream.ToArray());
}
这不是 re-creating 发送的确切消息(它删除了空格),因此验证步骤失败。我已经验证,如果我接收发送的原始消息并 运行 通过验证步骤,它确实有效。
这是一个正在发送的 JSON 字符串,内容类型为 application/json。因为,我接受来自各种来源的东西,我无法创建一个我可以序列化的 class。
我不认为有什么方法可以让 JsonDocument 保持传入的 Json 文档的格式,那么有没有更好的方法来处理这个问题?