我有一个在IIS7.5 server 2008 64bit下托管的Asp.net/C# Web应用程序。我的应用程序构建是32位。我的页面的视图状态非常大(1mb到4mb)。 我看到的问题是,当我继续使用网站一段时间后,浏览器的内存使用量不断增长到50 MB。我不知道我应该从哪里开始寻找问题。我的母版页中有ScriptManger,而我的子页面上的代理不确定它是否有助于此? 问题可能出在哪里,任何帮助都会受到赞赏。
答案 0 :(得分:0)
当在页面上提交时,viewstate只是HTML中的一个隐藏字段被POST到服务器。 客户端保存会话的发布数据,以便它可以根据请求回复/重新发布(即用户返回然后转发,它将提示用户重新提交表单/发布数据)。
通过将响应标头中的max-age
设置为0并将cache-control
设置为不缓存, 可能能够欺骗浏览器不保存数据。< / p>
但是,正如评论中所指出的那样,一个视图状态&gt; 1MB并不是一个理想的情况。你最好将客户端数据存储在服务器端Session
。
你可以做一些快速修复的事情。
1)禁用不需要它的客户端控件中的ViewState
。
http://msdn.microsoft.com/en-us/library/system.web.ui.page.enableviewstate.aspx
或
<asp:AnyControl EnableViewState="false"/>
2)启用应用程序的跟踪以查看其使用位置相应地禁用/查找泄漏。 http://msdn.microsoft.com/en-us/library/wwh16c6c.aspx
答案 1 :(得分:0)
您的问题是您在客户端存储了太多(viewstate或cookies)。对于每个请求,用户使其浏览器将其上载到您的Web服务器。因此,即使Web服务器可以快速处理请求,也需要一段时间才能将4MB请求上载到服务器。这不是内存泄漏。关于您在客户端浏览器上存储的数量,这是您逻辑上的一个缺陷。也许在每个页面加载时,您将相同的大数据添加到客户端的视图状态或cookie中,因此一段时间后请求变得如此之大以至于等待时间变得明显。要确定问题,您需要监控来自一个客户端的每个页面请求的viewstate和cookie,并确切了解增长的内容,然后您应该能够确定原因。