微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将很长的 json 发送到 Asp.NET MVC

如何解决如何将很长的 json 发送到 Asp.NET MVC

当尝试在我的网站上摆出一个巨大的 json包括一张大图片)时,我收到以下错误

使用 JSON 进行序列化或反序列化时出错 JavaScript 序列化器。字符串长度超过设定值 在 maxJsonLength 属性

SO 和网络上的所有答案基本上都显示了 2 个选项:

  1. JsonSerializer 上使用代码中的设置,这里无关紧要,因为我没有代码错误发生在我的操作被调用之前。

  2. maxJsonLength 中设置 web.config。我做的。但无济于事。我认为它仅与 WebServices 相关。这不是我的情况

为了更好的衡量,我还增加了我的 MaxJsonDeserializerMembers

这是我的 web.config 的相关部分:

<configuration>
<appSettings>
<add key="aspnet:MaxJsonDeserializerMembers" value="2147483647" />
</appSettings>
<system.webServer>
<security>
  <requestfiltering>
    <requestLimits maxQueryString="32768" maxAllowedContentLength="40000000" />
  </requestfiltering>
</security>
</system.webServer>
<system.web>
<httpRuntime maxRequestLength="7864320" requestValidationMode="2.0"
  maxQueryStringLength="11000" targetFramework="4.7.2" />
</system.web>
<system.web.extensions>
<scripting>
  <webServices>
    <jsonSerialization maxJsonLength="2147483647" />
  </webServices>
</scripting>
</system.web.extensions>
</configuration>

还是一样的错误

如果有什么不同,我会用 fetch 发帖。

这是StackTrace

在 System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer 序列化程序、字符串输入、类型类型、Int32 depthLimit) at System.Web.Mvc.JsonValueProviderFactory.GetDeserializedobject(ControllerContext 控制器上下文)在 System.Web.Mvc.JsonValueProviderFactory.GetValueProvider(ControllerContext 控制器上下文)在 System.Web.Mvc.ValueProviderFactoryCollection.GetValueProvider(ControllerContext 控制器上下文)在 System.Web.Mvc.ControllerBase.get_ValueProvider() 在 System.Web.Mvc.ControllerActionInvoker.GetParameterValue(ControllerContext controllerContext,ParameterDescriptor parameterDescriptor) 在 System.Web.Mvc.ControllerActionInvoker.GetParameterValues(ControllerContext controllerContext,ActionDescriptor actionDescriptor) 在 System.Web.Mvc.Async.AsyncControllerActionInvoker.c__displayClass3_1.b__0(AsyncCallback asyncCallback,Object asyncState) 在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase1.Begin(AsyncCallback callback,Object state,Int32 timeout) at System.Web.Mvc.Async.AsyncControllerActionInvoker.BeginInvokeAction(ControllerContext controllerContext,String actionName,AsyncCallback callback,Object state) at System.Web.Mvc.Controller.<>c.<BeginExecuteCore>b__152_0(AsyncCallback asyncCallback,Object asyncState,ExecuteCoreState innerState) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid1.CallBeginDelegate(AsyncCallback 回调,对象回调状态)在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase1.Begin(AsyncCallback callback,Int32 timeout) at System.Web.Mvc.Controller.BeginExecuteCore(AsyncCallback callback,Object state) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase1.Begin(AsyncCallback 回调、对象状态、Int32 超时)在 System.Web.Mvc.Controller.BeginExecute(RequestContext requestContext,AsyncCallback 回调,对象状态)在 System.Web.Mvc.MvcHandler.c.b__20_0(AsyncCallback asyncCallback,ProcessRequestState innerState) 在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid1.CallBeginDelegate(AsyncCallback callback,Object callbackState) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase1.Begin(AsyncCallback 回调、对象状态、Int32 超时)在 System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext、AsyncCallback 回调、对象状态)在 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在 System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) 在 System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean& 同步完成)

我还能做什么?

谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。