两次读取multipart / form-data

时间:2015-11-19 17:47:29

标签: asp.net-web-api multipartform-data hmac

我有一个ASP.NET WebApi,客户端通过HMAC进行身份验证。

身份验证在AuthenticationFilter中完成 为了比较HMAC密钥和客户端提供的密钥,我需要阅读Request.Content。一切都很好,直到这里。

在ParameterBinding中我还需要从Request.Content读取。这样可以正常工作,直到内容不是multipart/form-dataStringContentByteArrayContent可以通过content.ReadAsStringAsync() / content.ReadAsByteArrayAsync()多次阅读,但ReadAsMultipartAsync()只能调用一次。

因此,在身份验证后,我无法再次阅读内容(例如在ParamterBinding中),以便从请求内容中提取数据/图像等。

我在内部读到ReadAsStringAsync() / ReadAsByteArrayAsync()调用LoadIntoBufferAsync(),它将请求内容加载到内存缓冲区中。但使用我的多部分内容执行此操作并不能解决此问题。

例外是:

  

MIME多部分流的意外结束。 MIME多部分消息不是   完整。

1 个答案:

答案 0 :(得分:0)

如果您有权访问HttpContext.Current(非自托管),则可以在阅读后回滚输入流。像这样:

HttpContext.Current.Request.InputStream.Position=0;