gpt4 book ai didi

c# - 两次调用 ReadAsFormDataAsync

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

我面临这样一种情况,我必须从 ASP.NET Web API 中的传入请求中读取表单数据两次(从模型绑定(bind)器和过滤器)。我试过使用 LoadIntoBufferAsync 但没有成功。

// from model binder
Request.Content.LoadIntoBufferAsync().Wait();
var formData = Request.Content.ReadAsFormDataAsync().Result;

// from filter
var formData = Request.Content.ReadAsFormDataAsync().Result;

最佳答案

问题在于内容的底层缓冲区是只能读取一次的只进流。

为什么要读两遍?多一点上下文会有所帮助。您是从两个单独的过滤器中读取数据吗?

编辑:可以尝试直接从 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());
}

关于c# - 两次调用 ReadAsFormDataAsync,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18459476/

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