【问题标题】:ASP.NET Web API - Getting 404 when posting a Base64 string with HttpClientASP.NET Web API - 使用 HttpClient 发布 Base64 字符串时出现 404
【发布时间】:2017-04-19 09:03:50
【问题描述】:

不知道我在这里做错了什么。

尝试发布 Base64 编码的字节数组,并获得 404。

问题是,当我尝试使用正常值(“测试”)时,它可以工作。

API:

[HttpPost]
public IHttpActionResult Post(dynamic data)
{
  // ...
  return Ok();
}

客户:

public static bool UploadDocument(string base64Image)
{
  // ...
  using (var handler = new HttpClientHandler() { UseDefaultCredentials = true})
  using (var client = new HttpClient(handler))
  {
    var data = new { Image = base64Image }; // Image = 123 (or any random value) Works.
    var res = client.PostAsJsonAsync(@"(url)", data).Result;
    if(res.IsSuccessStatusCode)
      // ...
  }
}

尝试了其他几个变体,也尝试使用 WebRequest 代替。 问题依然存在。

【问题讨论】:

  • 大概您期望PostAsJsonAsnc 将图像序列化为base 64。这肯定会发生吗?如果您手动将图像对象编码为 base 64,然后尝试发布它会发生什么?
  • @richzilla 我已经自己编码了。
  • 仔细观察,是的,你是……
  • 您是否尝试过添加 Content-Transfer-Encoding 标头。例如 httpclient.DefaultRequestHeaders.TransferEncoding.Add(new TransferCodingHeaderValue("BASE64")); w3.org/Protocols/rfc1341/5_Content-Transfer-Encoding.html
  • 只是那个特定的 base 64 字符串会导致问题吗?你能用 base 64 对“test”这个词进行编码,看看是否能通过吗?

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


【解决方案1】:

我尝试发送的数据大小大于默认最大值。

我得到的404其实是404.13,也就是“Content Length Too Large”。

您可以找到有关此here 的更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-02
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-11
    相关资源
    最近更新 更多