我在 .NET 4.0 键,当我使用的JavaScriptSerializer运行的 MVC3 应用程序.Deserialize 我得到一个错误。
使用JSON序列化的JavaScriptSerializer反序列化或过程中的错误。字符串的长度超过上maxJsonLength属性设置的值。
阅读Can我在web.config中设置无限长度maxJsonLength 我把 jsonSerialization maxJsonLength 键在我的web.config,但它被忽略。虽然我可以设置code中的 JavaScriptSerializer.MaxJsonLength 属性,它工作正常。
我想有在的Web.config ,而不是code中的价值。这里是我如何使用的JavaScriptSerializer 。
昏暗的客户端作为新的Web客户端...昏暗的结果= _client.DownloadString(测试)昏暗的串行器=新的JavaScriptSerializer返回serializer.Deserialize(中富)(结果)下面是我的的Web.config
<结构> < configSections> ... < / configSections> <&的appSettings GT; ... < /的appSettings> <&的System.Web GT; <的customErrors模式=ON> <错误状态code =404重定向=/ HTTP404/> <错误状态code =403重定向=/ Http403/> <错误状态code =550重定向=/ Http550/> < /&的customErrors GT; <编译调试=真targetFramework =4.0/> <页面controlRenderingCompatibilityVersion =4.0> <&命名空间GT; <添加命名空间=System.Web.Helpers/> <添加命名空间=System.Web.Mvc/> <添加命名空间=System.Web.Mvc.Ajax/> <添加命名空间=System.Web.Mvc.Html/> <添加命名空间=System.Web.Routing/> <添加命名空间=System.Web.WebPages/> < /命名空间> < /页> < /system.web> < System.Web.Extensions程序> <脚本> <&Web服务GT; < jsonSerialization maxJsonLength =5000/> < / WebServices的> < /脚本> < /system.web.extensions> < system.webServer> ....< /system.webServer>< /结构>解决方案
根据您所提供的链接(第2最投票的答案),你的web.config设置会因为你使用的是被忽略的内部实例的的JavaScriptSerializer 。
如果你需要存储在web.config中的值,可以添加在℃的关键;的appSettings> 部分名为 maxJsonLength 与值 5000 ,然后在code,你可以使用它像:
VAR串=新的JavaScriptSerializer();serializer.MaxJsonLength = ConfigurationManager.AppSettings ['maxJsonLength'];I have an MVC3 application running under .NET 4.0 and when I use JavascriptSerializer.Deserialize I'm getting an error.
Error during serialization or deserialization using the JSON JavaScriptSerializer. The length of the string exceeds the value set on the maxJsonLength property.
Reading Can I set an unlimited length for maxJsonLength in web.config I put the jsonSerialization maxJsonLength key in my web.config but it gets ignored. Though I can set the JavaScriptSerializer.MaxJsonLength property in code and it works fine.
I would like to have the value in the Web.config rather than code. Here is how I am using JavaScriptSerializer.
Dim client As New WebClient ... Dim result = _client.DownloadString("Test") Dim serializer = New JavaScriptSerializer Return serializer.Deserialize(Of Foo)(result)Here is my Web.config
<configuration> <configSections> ... </configSections> <appSettings> ... </appSettings> <system.web> <customErrors mode="On"> <error statusCode="404" redirect="/Http404"/> <error statusCode="403" redirect="/Http403"/> <error statusCode="550" redirect="/Http550"/> </customErrors> <compilation debug="true" targetFramework="4.0"/> <pages controlRenderingCompatibilityVersion="4.0"> <namespaces> <add namespace="System.Web.Helpers"/> <add namespace="System.Web.Mvc"/> <add namespace="System.Web.Mvc.Ajax"/> <add namespace="System.Web.Mvc.Html"/> <add namespace="System.Web.Routing"/> <add namespace="System.Web.WebPages"/> </namespaces> </pages> </system.web> <system.web.extensions> <scripting> <webServices> <jsonSerialization maxJsonLength="50000000"/> </webServices> </scripting> </system.web.extensions> <system.webServer> .... </system.webServer> </configuration>解决方案
According to the link you provided (the 2nd most voted answer), your web.config setting will be ignored because you're using an internal instance of the JavaScriptSerializer.
If you need the value to be stored in the web.config, you could add a key in the <appSettings> section called maxJsonLength with a value of 50000000 and then in your code, you could use it like:
var serializer = new JavaScriptSerializer(); serializer.MaxJsonLength = ConfigurationManager.AppSettings['maxJsonLength'];
更多推荐
Web.config中jsonSerialization maxJsonLength忽略
发布评论