从web.config中读取maxJsonLength

时间:2014-07-24 10:22:17

标签: asp.net json web-services web-config

我需要在运行时从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以获取此值?

1 个答案:

答案 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