我在MVC下面的代码。 在我的岗位行动params
将有巨大的数据。 所以,我改变web.config
相应不过,我收到提示 。 实际问题是,当POST被称为控制器甚至没有击中。
I tried Following ways
- 覆盖JsonResult
- 其次链接 。 在这里,我看不出这是从脚本发送的数据。 我在得到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参数名:输入
创建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.cs
中Application_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