【问题标题】:Post large string to Web API controller将大字符串发布到 Web API 控制器
【发布时间】:2024-05-23 22:45:01
【问题描述】:

我有一个跟随控制器

public class MyController : ApiController
{
   [HttpPost]
   public string LoadData(string currentState)
   {

   }
}

我使用jQuery.post 从浏览器发布一些数据。状态的长度应该是 29915 个字符,但 currentState 变量只有 21621 个字符。字符串的结尾丢失。 我检查了浏览器是否将所有数据发送到服务器并且确实如此。所以问题出在服务器某处。

【问题讨论】:

  • 你设置的内容类型是什么?
  • Firebug 显示请求 Content-Type 标头为 application/x-www-form-urlencoded; charset=UTF-8
  • 我刚用 30K 测试过,效果很好。您的字符串是否包含未编码的内容?
  • 不,它是一个有效的 JSON 字符串。如果我将该数据直接发送到通用处理程序 (*.ashx),它就可以工作并且我可以反序列化字符串。
  • 有效的 JSON?!这应该是 application/x-www-form-urlencoded 而不是 JSON。你有field=value&field=value吗?

标签: asp.net asp.net-mvc asp.net-web-api wcf-web-api


【解决方案1】:

设置ReadBufferSize 有帮助:

protected void Application_Start(object sender, EventArgs e)
{
   GlobalConfiguration.Configuration.Formatters.FormUrlEncodedFormatter.ReadBufferSize = 256 * 1024; // 256 KB
}

【讨论】:

    最近更新 更多