gpt4 book ai didi

c# - CopyToAsync 与 ReadAsStreamAsync 的巨大请求负载

转载 作者:行者123 更新时间:2023-11-30 19:35:50 25 4
gpt4 key购买 nike

我必须为巨大的负载计算散列,所以我使用流而不是将所有请求内容加载到内存中。问题是这段代码之间有什么区别:

using (var md5 = MD5.Create())
using (var stream = await authenticatableRequest.request.Content.ReadAsStreamAsync())
{
return md5.ComputeHash(stream);
}

还有那个:

using (var md5 = MD5.Create())  
using (var stream = new MemoryStream())
{
await authenticatableRequest.request.Content.CopyToAsync(stream);
stream.Position = 0;

return md5.ComputeHash(stream);
}

我希望在内部有相同的行为,但也许我遗漏了什么。

最佳答案

第一个版本看起来不错,让散列器处理流读取。它就是为此而设计的。

ComputeHash(stream) 将在 while 循环中读取 block 并重复调用 TransformBlock()。

但是第二段代码将所有内容加载到内存中,所以不要那样做:

using (var stream = new MemoryStream())
{
await authenticatableRequest.request.Content.CopyToAsync(stream);

关于c# - CopyToAsync 与 ReadAsStreamAsync 的巨大请求负载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51607985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com