繁体   English   中英

获取不带标题的HttpRequestMessage的内容

[英]Get the content of a HttpRequestMessage without headers

我正在开发一个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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM