字符串长度超过maxJsonLength属性设置的值。c#
Posted
技术标签:
【中文标题】字符串长度超过maxJsonLength属性设置的值。c#【英文标题】:The length of the string exceeds the value set on the maxJsonLength property.c# 【发布时间】:2018-04-25 17:11:06 【问题描述】:如您所见,我正在尝试从我的 wcf 服务中获取结果:
public List<InquiryStatus> SearchInquiryStatus(string userid, string datestart, string dateend)
string result = "";
using (WebClient ClientRequest = new WebClient())
ClientRequest.Headers["Content-type"] = "application/json";
ClientRequest.Encoding = System.Text.Encoding.UTF8;
result = ClientRequest.DownloadString(ServiceHostName + "/MonitoringInquiryService.svc/SearchInquiryStatus/" +
userid + "/"
+ datestart + "/" + dateend
);
var javascriptserializer = new JavaScriptSerializer();
return javascriptserializer.Deserialize<List<InquiryStatus>>(result);
但我收到此错误:
Error during serialization or deserialization using the JSON JavaScriptSerializer. The length of the string exceeds the value set on the maxJsonLength property.
Parameter name: input
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.ArgumentException: Error during serialization or deserialization using the JSON JavaScriptSerializer. The length of the string exceeds the value set on the maxJsonLength property.
Parameter name: input
当我调用我的服务 url http://reporting.demo.ir/MonitoringInquiryService.svc/SearchInquiryStatus/null/'20171106'/'20171113'
时,请注意
在浏览器中我得到了结果。
我用谷歌搜索了我的错误,我发现了这个:
<configuration>
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="50000000"/>
</webServices>
</scripting>
</system.web.extensions>
</configuration>
我将此添加到我的 UI 网络配置中。但我得到了同样的错误。
【问题讨论】:
一次尝试使用代码javascriptserializer.MaxJsonLength = Int32.MaxValue;
中的内联MaxJsonLength
设置
@AkashKC 它有效。谢谢。为什么?
我怀疑,你在控制器中反序列化你的 json,它没有从 web.config 中的 webservices 设置中获取价值。 Web.config jsonSerialization 设置仅由 Web 服务使用。
恕我直言,您的json string
长度大于50000000
。它在 int32.MaxValue
的情况下有效,因为 int32.MaxValue
等于 2147483647
。要验证这一点,请尝试在web config
中将50000000
替换为2147483647
,看看它是否有效。
@EhsanAkbar :该设置仅适用于 Web 服务项目,不适用于 UI 项目。
【参考方案1】:
您的 UI 项目似乎在 ASP.NET MVC 框架中,正如您在问题中指定的那样,无法从 web.config 设置中读取 JavaScriptSerializer
MaxJsonLength
。
要设置MaxJsonLength
,您需要在代码中按以下方式指定值:
var javascriptserializer = new JavaScriptSerializer()
MaxJsonLength = Int32.MaxValue // specify length as per your business requirement
;
【讨论】:
【参考方案2】:在你的函数中添加这一行。
var javascriptserializer = new JavaScriptSerializer();
javascriptserializer.MaxJsonLength = Int32.MaxValue;
【讨论】:
以上是关于字符串长度超过maxJsonLength属性设置的值。c#的主要内容,如果未能解决你的问题,请参考以下文章
字符串的长度超过了为 maxJsonLength 属性设置的值
.net MVC 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错,字符串的长度超过了为 maxJsonLength 属性设置的值
使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength 属性设置的值
使用JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength属性
.net MVC 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错,字符串的长度超过了为 maxJsonLength 属性设置的值