我陷入了一个问题,该问题导致我的WebApplication定期崩溃。客户端(浏览器)向服务器发出一些(超过1个)请求后获得HTTP状态代码500。我打开IIS失败请求跟踪,发现该请求超出了最大请求限制:
Maximum request length exceeded
我查看了隐藏的__VIEWSTATE
字段,发现它包含一些我期望的信息以及一个带有49,500个字符的神秘的(可能是base64编码的)序列化对象。我不知道为什么这么大,并在后面的代码中检查了我的Session和ViewState对象。但是没有什么可疑的。
由于我正在显示2个ASP.NET图表和一个大数据表(5k行和aprox 20列,因此我进入了Web.Config文件并将请求限制增加到]]
</system.web> <httpRuntime maxRequestLength="4194304"/> </system.web>
有点成功,这意味着服务器在再次请求之前幸存了下来,然后以
OutOfMemoryException
崩溃,声称没有更多的可用内存。
到目前为止,我很确定存储了一些(并且我指的是吨)不需要的,不必要的,最有可能未使用的对象。 (描述内存泄漏的好方法;))。
但是在这一点上,我迷路了。在将ViewState序列化并检查其中是否引用了哪些对象之前,有什么办法可以查看?我是否可以清除/删除/刷新ViewState / Session /由谁负责,以使干净的序列化ViewState不超过默认限制?
我陷入了一个问题,该问题导致我的WebApplication定期崩溃。客户端(浏览器)向服务器发出一些(超过1个)请求后获得HTTP状态代码500。我打开了...
在服务器端:我们应该编写代码,以便于处理响应时间,我们可以遵循以下操作
最后找到原因。显然,an还将其内容存储在ViewState中,这导致PostBack请求变得异常大。 (也有一些遗留代码将数据推送到ViewState中)