VJA*_*JAI 5 c# asp.net-web-api
我面临的情况是,我必须从 ASP.NET Web API 中的传入请求读取表单数据两次(从模型绑定程序和过滤器)。我尝试过使用LoadIntoBufferAsync但没有运气。
// from model binder
Request.Content.LoadIntoBufferAsync().Wait();
var formData = Request.Content.ReadAsFormDataAsync().Result;
// from filter
var formData = Request.Content.ReadAsFormDataAsync().Result;
Run Code Online (Sandbox Code Playgroud)
问题在于,内容的底层缓冲区是只能读取一次的只进流。
为什么需要读两遍?更多的背景知识会有所帮助。您是否正在从两个单独的过滤器中读取内容?
编辑:可能尝试直接从 MS_HttpContext 读取并将其用作内容流(不要认为这在自托管环境中有效)。
using (var s = new System.IO.MemoryStream()) {
var ctx = (HttpContextBase)actionContext.Request.Properties["MS_HttpContext"];
ctx.Request.InputStream.Seek(0, System.IO.SeekOrigin.Begin);
ctx.Request.InputStream.CopyTo(s); var body =
System.Text.Encoding.UTF8.GetString(s.ToArray());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3754 次 |
| 最近记录: |