【问题标题】:How to get HttpContent from Request object?如何从 Request 对象中获取 HttpContent?
【发布时间】:2016-11-15 03:35:51
【问题描述】:

如果调用者添加了 HttpContent:

using (var content = new MultipartFormDataContent()) 
{
  HttpContent additionalContent = StringContent("just a test");
  content.Add(additionalContent);

然后 POST'ed,接收方如何检索这些附加内容?

我见过人们调用 Request.Content 的例子。但是,HttpContent.Current.Request 没有 Content 对象。

接收者是[HttpPost] WebAPI。

【问题讨论】:

标签: c# .net asp.net-web-api httpcontent


【解决方案1】:

使用ReadAsMultipartAsync扩展方法获取内容部分,然后使用ReadAsStringAsync解析字符串内容:

var provider = await Request.Content.ReadAsMultipartAsync();
var content = provider.Contents.FirstOrDefault(); //assumed single content part has been sent
if (content != null)
{
    var result = await content.ReadAsStringAsync();
}

【讨论】:

  • 关于将方法类型更改为Task的一些事情,我不想这样做。
  • 什么意思?这有什么关系?
  • 这在返回 HttpMessageResponse 的方法中不起作用。我不想仅仅为此重构方法。
  • 如果我添加.Result,时间长了,抛出异常:任务被取消。 “发生了一个或多个错误”。这是模糊的。我实际上在客户端捕获了错误,即使该行包含在 webapi 端的 try/catch 中。
  • 还有什么真正的理由不将 Web api 操作转换为 async Task<HttpResponseMessage>
【解决方案2】:

我认为您请求的正文只不过是请求的内容。 请使用F12 开发者工具->网络-> 请求的响应部分或正文部分进行交叉检查

【讨论】:

  • 这是在客户端应用程序中,而不是在 Web 中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-31
  • 1970-01-01
  • 2012-07-22
  • 2014-02-19
  • 1970-01-01
  • 2017-08-08
相关资源
最近更新 更多