获取不带报头的HttpRequestMessage的内容
本文关键字:HttpRequestMessage 报头 获取 | 更新日期: 2023-09-27 17:50:12
我正在开发一个MVC ApiController
,用于管理上传文件的序列化。
我使用以下方法访问上传文件的内容:
public class UploadController : ApiController
{
[System.Web.Http.HttpPost]
public UploadOutcome UploadFile()
{
HttpContent selectFile = Request.Content;
UploadOutcome res = null;
//implements the serialization logic
SerializerManager serializer = new SerializerManager();
try
{
string content = selectFile.ReadAsStringAsync().Result;
res = serializer.Serialize(content);
}
catch(Exception ex)
{
throw ex;
}
return res;
}
}
Request.Content.ReadAsStringAsync().Result
是一种广泛使用的解决方案。请看这里和这里。
不幸的是,获得的content
字符串包含HttpRequestMessage
的内容和标题:
文件内容
920-006099 ;84;65;07/03/2014 00:00;13/03/2014 23:59;10;BZ;1
RL60GQERS1/XEF;1499;1024;07/03/2014 00:00;13/03/2014 23:59;5;KV;1
内容字符串
-----------------------------11414419513108
Content-Disposition: form-data; name="selectFile"; filename="feed.csv"
Content-Type: text/csv
920-006099 ;84;65;07/03/2014 00:00;13/03/2014 23:59;10;BZ;1
RL60GQERS1/XEF;1499;1024;07/03/2014 00:00;13/03/2014 23:59;5;KV;1
-----------------------------11414419513108--
是否有办法摆脱标题?换句话说,我想获得没有标题的内容。
你应该使用ReadAsMultipartAsync
:
var content = await selectFile.ReadAsMultipartAsync(); // You *really* ought to be using await
var body = await content.Contents.Single(x => x.Headers.ContentDisposition.Name == "'"selectFile'"").ReadAsStringAsync();
你的内容(没有标题)将在body
。要使用await
,您应该将方法签名更改为:
public async Task<UploadOutcome> UploadFile()