C# 浏览器上的内存使用量不断增长IIS 7.5 Asp.net应用程序

C# 浏览器上的内存使用量不断增长IIS 7.5 Asp.net应用程序,c#,javascript,asp.net,iis,C#,Javascript,Asp.net,Iis,我有一个Asp.net/C#web应用程序,托管在IIS7.5 server 2008 64位下。我的应用程序版本是32位的。我的页面的viewstate非常大(1mb到4mb)。 我所看到的问题是,当我继续使用网站一段时间后,浏览器的内存使用量一直增长到50MB。我不确定应该从哪里开始寻找问题。我的母版页上有ScriptManger,子版页上有代理,不确定它是否有助于此? 如果可能出现问题,请提供任何帮助。视图状态只是HTML中的一个隐藏字段,当在页面上提交时,它会被发布到服务器。 客户端为会

我有一个Asp.net/C#web应用程序,托管在IIS7.5 server 2008 64位下。我的应用程序版本是32位的。我的页面的viewstate非常大(1mb到4mb)。 我所看到的问题是,当我继续使用网站一段时间后,浏览器的内存使用量一直增长到50MB。我不确定应该从哪里开始寻找问题。我的母版页上有ScriptManger,子版页上有代理,不确定它是否有助于此?
如果可能出现问题,请提供任何帮助。

视图状态只是HTML中的一个隐藏字段,当在页面上提交时,它会被发布到服务器。 客户端为会话保存已发布的数据,以便在请求时回复/重新发布(即,用户先返回,然后转发,它将提示用户重新提交表单/发布数据)

您可以通过将响应标题中的
max age
设置为0,并将
缓存控制设置为not cache,来欺骗浏览器不保存数据

但是,正如评论中指出的,viewstate>1MB不是理想的情况。您最好将客户端数据存储在服务器端的
会话中

作为一个快速解决方案,您可以做一些事情

1) 在客户端控件中禁用不需要的
ViewState
。 或


视图状态只是HTML中的一个隐藏字段,当在页面上提交时,它将被发布到服务器。 客户端为会话保存已发布的数据,以便在请求时回复/重新发布(即,用户先返回,然后转发,它将提示用户重新提交表单/发布数据)

您可以通过将响应标题中的
max age
设置为0,并将
缓存控制设置为not cache,来欺骗浏览器不保存数据

但是,正如评论中指出的,viewstate>1MB不是理想的情况。您最好将客户端数据存储在服务器端的
会话中

作为一个快速解决方案,您可以做一些事情

1) 在客户端控件中禁用不需要的
ViewState
。 或


您的问题是在客户端(viewstate或Cookie)存储了太多内容。对于用户发出的每个请求,浏览器都会将其上载到您的web服务器。因此,即使web服务器可以快速处理请求,4MB请求也需要一段时间才能上载到服务器。这不是内存泄漏。在客户端浏览器上存储多少数据,这是您逻辑上的一个缺陷。可能在每次页面加载时,您都在向客户端的viewstate或Cookie添加相同的大数据,因此,一段时间后,请求变得如此之大,以至于等待时间变得明显。要确定问题,您需要监控来自一个客户端的每个页面请求的viewstate和Cookie,并准确查看增长的内容,然后您应该能够确定原因。

您的问题是客户端存储的内容太多(viewstate或Cookie)。对于用户发出的每个请求,浏览器都会将其上载到您的web服务器。因此,即使web服务器可以快速处理请求,4MB请求也需要一段时间才能上载到服务器。这不是内存泄漏。在客户端浏览器上存储多少数据,这是您逻辑上的一个缺陷。可能在每次页面加载时,您都在向客户端的viewstate或Cookie添加相同的大数据,因此,一段时间后,请求变得如此之大,以至于等待时间变得明显。要确定问题,您需要监控来自一个客户端的每个页面请求的viewstate和Cookie,并准确查看其增长情况,然后您应该能够确定原因。

要查找内存泄漏,请查看以下建议:.50 MB对于浏览器来说并不算多。您应该更加担心viewstate的大小。4MB viewstate意味着客户端需要发送和接收每个请求的全部4MB。很多人仍然使用非对称DSL,这通常具有相对较低的上传速度。这意味着对您的应用程序的每个请求对您的许多用户来说都可能感觉非常慢。我看到的问题是,我的服务器响应时间平均为0.87秒,但对于网络延迟小于10毫秒的intranet用户,平均客户端响应时间为12秒。我猜我看到的内存泄漏可能与此有关这个问题。我们不知道您的应用程序的详细信息,但4MB的Viewstate是不寻常的,通常不会运行良好。你能给我们提供更多关于网站的错误以及网站架构的详细信息吗?要查找内存泄漏,请查看以下建议:.50MB对于浏览器来说并不算多。您应该更加担心viewstate的大小。4MB viewstate意味着客户端需要发送和接收每个请求的全部4MB。很多人仍然使用非对称DSL,这通常具有相对较低的上传速度。这意味着对您的应用程序的每个请求对您的许多用户来说都可能感觉非常慢。我看到的问题是,我的服务器响应时间平均为0.87秒,但对于网络延迟小于10毫秒的intranet用户,平均客户端响应时间为12秒。我猜我看到的内存泄漏可能与此有关这个问题。我们不知道您的应用程序的详细信息,但4MB的Viewstate是不寻常的,通常不会运行良好。你能给我们更多关于这个网站的错误和网站架构的细节吗?
<asp:AnyControl EnableViewState="false"/>