我需要在运行时从web.config读取maxJsonLength
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="3000000"/>
</webServices>
</scripting>
</system.web.extensions>
<system.web>
无论Web服务的设置如何,只需实例化一个新的JavaScriptSerializer并读取MaxJsonLength属性即可显示默认值2097152。
为什么?
我们有一个返回Json的asmx Web服务,在极端情况下,返回的数据无法通过内置的序列化程序转换为Json,我们得到一个丑陋的错误。捕获所有其他异常,并且服务返回已清理的自定义异常。
如果我可以读取maxJsonLength值并手动尝试序列化代码,那么我可以捕获异常并正确处理它。
为了这个目的,我不能在AppSettings中复制maxJsonLength。
是否有一种通用的方法来任意解析web.config以获取此值?
答案 0 :(得分:0)
请尝试使用以下代码段。
string str = HttpContext.Current.Request.ApplicationPath.ToString();
Configuration conf = WebConfigurationManager.OpenWebConfiguration(str);
ScriptingJsonSerializationSection section = (ScriptingJsonSerializationSection)conf.GetSection("system.web.extensions/scripting/webServices/jsonSerialization");
int Length = section.MaxJsonLength; // Access length here