溶液:字符串的长度超过在maxJsonLength属性POST操作中设置的值(Solution: T

2019-09-28 11:46发布

我在MVC下面的代码。 在我的岗位行动params将有巨大的数据。 所以,我改变web.config相应不过,我收到提示 。 实际问题是,当POST被称为控制器甚至没有击中。

I tried Following ways

  1. 覆盖JsonResult
  2. 其次链接 。 在这里,我看不出这是从脚本发送的数据。 我在得到NULL base64

controller.cs

 [System.Web.Mvc.HttpPost]
    public bool postImage(string base64)
    {
       return true;
    }

web.config中

 <system.web.extensions>
<scripting>
  <webServices>
    <jsonSerialization maxJsonLength="2147483644"/>
  </webServices>
</scripting>

JavaScript的

  $.ajax({
  type: "POST",
  url: 'http://localhost:21923/communities/postImage?base64=',
  contentType: "application/json; charset=utf-8",
  data: JSON.stringify(data),
  dataType: "json",
  success: function(data) {
    document.getElementById('test').click();
  },
  error: function(a, b, c) {
    console.log(a);
  }
})

错误

使用JSON JavaScriptSerializer的序列化和反序列化过程中的错误。 字符串的长度超过上maxJsonLength属性设置的值\ r \ n参数名:输入

Answer 1:

创建JsonDotNetValueProviderFactory.cs写下面的代码:

public sealed class JsonDotNetValueProviderFactory : ValueProviderFactory
{
  public override IValueProvider GetValueProvider(ControllerContext controllerContext)
 {
    if (controllerContext == null)
        throw new ArgumentNullException("controllerContext");

    if (!controllerContext.HttpContext.Request.ContentType.StartsWith("application/json", StringComparison.OrdinalIgnoreCase))
        return null;

    var reader = new StreamReader(controllerContext.HttpContext.Request.InputStream);
    var bodyText = reader.ReadToEnd();

    return String.IsNullOrEmpty(bodyText) ? null : new DictionaryValueProvider<object>(JsonConvert.DeserializeObject<ExpandoObject>(bodyText, new ExpandoObjectConverter()) , CultureInfo.CurrentCulture);
 }
}

并添加以下两行Global.asax.csApplication_Start()

        ValueProviderFactories.Factories.Remove(ValueProviderFactories.Factories.OfType<JsonValueProviderFactory>().FirstOrDefault());
        ValueProviderFactories.Factories.Add(new JsonDotNetValueProviderFactory());

来源: 链接

由于达林季米特洛夫 !

如果上面的代码失败:按照这个实力有很大帮助

由于dkinchen !



文章来源: Solution: The length of the string exceeds the value set on the maxJsonLength property for POST action