Web API中的MultipartContent响应

鲁斯塔姆·萨拉赫特迪诺夫(Rustam Salakhutdinov)

我想有可能为Web API中的请求返回复杂的响应。例如,我想返回带有一些复杂对象的流。我试图用MultipartFormDataContent做到这一点:

    public static HttpResponseMessage GetMultipartResponse<T>(T responseData, Stream streamToReturn)
    {
        return new HttpResponseMessage
        {
            Content = new MultipartContent
            {
                new StreamContent(streamToReturn),
                new ObjectContent<T>(responseData, new JsonMediaTypeFormatter())
            }
        };
    }

HttpResponseMessage在服务器端很正常我可以通过调试器看到我的Web API方法如何返回此响应,但是在客户端,我遇到了一个错误:

StatusCode: 500, ReasonPhrase: 'Internal Server Error', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
  Pragma: no-cache
  X-SourceFiles: =?UTF-8?B?YzpcdXNlcnNccnVzdGFtX3NhbGFraHV0ZGlub3ZcZG9jdW1lbnRzXHZpc3VhbCBzdHVkaW8gMjAxM1xQcm9qZWN0c1xGaWxlU2VydmljZUFQSVxGaWxlU2VydmljZUFQSVxhcGlcZ2V0?=
  Cache-Control: no-cache
  Date: Tue, 26 Jul 2016 08:30:22 GMT
  Server: Microsoft-IIS/8.0
  X-AspNet-Version: 4.0.30319
  X-Powered-By: ASP.NET
  Content-Length: 1444
  Content-Type: application/json; charset=utf-8
  Expires: -1
}

客户端或服务器端没有其他例外,打开错误详细信息我无法获得更多信息:

config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;

更新:尝试通过以下方式在客户端读取响应:

var result = await response.Content.ReadAsMultipartAsync();

并得到了这个例外:

提供了无效的“ HttpContent”实例。它没有以“ multipart /”开头的内容类型标头。

我哪里出问题了?

更新2:我在服务器端有正常的响应:

    StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.MultipartContent, Headers:
    {
      Content-Type: multipart/multipart; boundary="3e6d3573-9031-41a7-b7f4-d1421bc1451d"
    }
鲁斯塔姆·萨拉赫特迪诺夫(Rustam Salakhutdinov)

我发现了错误。我使用以下命令返回我的多部分内容:

        using (var stream = MyFileStream())
        {
            var respone = MultipartResponseHelper.GetMultipartResponse(response, stream, Request);
            return respone;
        }

因此它返回正确的响应,但是随后multipartContent内部的流将被处置,这就是问题的原因。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

更改Web API中的错误响应

来自分类Dev

从Web API 2响应中删除Cookie

来自分类Dev

在Web API 2中缓存巨大的响应

来自分类Dev

在Web API响应中编写JSON数组

来自分类Dev

从Web API 2响应中删除Cookie

来自分类Dev

未在“ Web API的响应”中设置Cookie

来自分类Dev

更改Web API中的错误响应

来自分类Dev

Web Api响应标准

来自分类Dev

无法在Web API响应中序列化ByteArraycontent类型

来自分类Dev

在Web API控制器中构建JSON响应

来自分类Dev

如何在Web API的响应中附加文件

来自分类Dev

.net Web API响应json封装在xml中

来自分类Dev

web api响应中的列表与数据表

来自分类Dev

Web API响应xml语言

来自分类Dev

Web API响应时间

来自分类Dev

禁用Web API响应的缓存

来自分类Dev

Web API响应时间

来自分类Dev

HttpClient检索Web API响应

来自分类Dev

从 web api 发送正确的响应

来自分类Dev

为什么JSON响应在Web API响应中包含反斜杠

来自分类Dev

如何从 web api 响应中的每个属性名称中删除“字段”文本

来自分类Dev

如何延迟我的Web API的响应

来自分类Dev

如何测试Web API JSON响应?

来自分类Dev

Web API问题,发送压缩响应

来自分类Dev

Nancy:如何模仿Web API的NotFound响应?

来自分类Dev

Web API 2响应类型比较

来自分类Dev

如何测试Web API JSON响应?

来自分类Dev

如何延迟我的Web API的响应

来自分类Dev

发送Web API响应的正确方法