C# 在 MultiPart 响应内容到达时读取它们

C# Reading MultiPart response contents as they arrive

我有一个 WebApi 方法可以接收多部分数据。当前实现使用 MultipartMemoryStreamProvider 来接收内容。

我想确保某些部分先于其他部分收到(也就是文件内容之前的文件散列)。不幸的是,据我所知,HttpContentMultipartExtensions 将 MimeMultipartParser 实例化为 HttpContent 的响应流......MimeMultipartParser 使用提供的 StreamProvider 在数据到达时实例化新流......但似乎没有通知/事件随着解析器从上一个流切换到下一个流。

通过使用事件,我可以对文件的散列进行排队(在文件内容到达之前),将文件内容泵入文件,并在下一个文件 hash/contents 到达时确认散列。

不幸的是,我看到的每个示例和代码都表明我只能在内容流完成后才能访问它们。 (我确实看到 MimeMultipartBodyPartParser 的 ParseBuffer 产生了它返回的 MimeBodyParts,我只是没有看到任何访问它的方法,因为它似乎只是从私有 MultipartReadAsyncComplete 调用)

我错过了什么吗?有没有更好的方法?

我不会尝试在 MIME 解析代码本身中解决 MITM 攻击,因为 MITM 是一种插入到部分架构中的攻击。

有拓扑结构和经过验证的解决方案(例如多因素或 SSL)可让您的客户端确定会话和内容发送者的有效性。

如 Evk 所说,如果您的体系结构容易受到 MITM 的影响,那么您需要查看端到端连接的安全性,而不是在收到 MIME 数据时进行验证。 如果您担心数据的安全性,那么您需要考虑对数据进行加密,并使用非不透明加密技术(不签名),这将防止在传输过程中被操纵,并允许客户端在收到消息时解密.

如果保护客户端和服务器之间的连接以避免 MITM 对您不起作用,也许您可​​以解释您的体系结构的限制,以便我们提供更好的答案。