【发布时间】:2020-08-06 19:36:15
【问题描述】:
我正在尝试在真实案例场景中发布 MultipartFormDataContent,数据内容对象可以包含从简单字符串到视频文件的任何内容,我在下面使用序列化对象,只是一个概念证明。 另外我想指出,使用 JSON 对象不会满足我的现实生活场景
public class GzipMultipartContent : MultipartFormDataContent
{
public GzipMultipartContent()
{
Headers.ContentEncoding.Add("gzip");
}
protected override Task SerializeToStreamAsync(Stream stream, TransportContext context)
{
return Task.Factory.StartNew(() =>
{
using (var gzip = new GZipStream(stream, CompressionMode.Compress, true))
base.SerializeToStreamAsync(gzip, context);
});
}
}
我是这样称呼它的
var gzipped = new GzipMultipartContent();
var test = new TestClass();
gzipped.Add(new StringContent(JsonConvert.SerializeObject(test)), "value");
var client = new HttpClient();
var result = client.PostAsync("http://localhost:60001/api/Home/", gzipped).Result;
这是控制器中的发布操作
// POST: api/Home
[HttpPost]
public void Post([FromForm] object value)
{
}
我在服务器端添加了一个断点并确保它甚至没有到达 Post 方法,我还尝试了一个正常的 POST 请求以确保它不是服务器配置问题或 URL 输入错误
【问题讨论】: