【发布时间】:2010-05-15 07:42:52
【问题描述】:
我刚刚部署了一个应用程序,由于复杂的原因,它在第一次需要特定表中的任何数据时(即当客户请求查看产品第一次,所有产品数据都存储在 ProductManager 类中(其中一个实例存储在 SiteContent 类的共享属性中,使 ProductManager 可以从任何页面轻松访问)。
现在忘记了,您现在可能因为使用这种方法而怒视我。我确信它效率低下,但我现在才学习 .Net 一年左右,所以我仍在学习。
我注意到的一件事是我可以访问该站点一次,然后在 5 分钟后重新访问它,它会再次将所有数据加载到 ProductManager 类中。这似乎是一个 .Net 应用程序超时问题 - 因为会话超时设置为 30 分钟,并且当我在管理前端登录时,它会在 5 分钟后将我注销(ish)。
有人知道如何改变吗?有什么方法可以在代码中更改它而无需联系托管公司?如果不在代码中,有什么办法可以在 web.config 中更改它?
提前致谢。
问候,
理查德
更多细节:
模块 (SiteContent) 存储每个“Manager”类的实例 - 页面可以调用 Manager.Create、Manager.Update、Manager.Remove 等,并使用 Manager.Items 访问存储在管理器中的项目列表(例如 SiteContent.ProductManager.Items 返回存储在数据库中的所有产品,SiteContent.UserManager.Items 返回存储在数据库中的所有用户的列表)。看起来,因为它是一个模块,所以它在用户和页面加载之间共享。
我尝试返回一个页面并在 3 - 4 分钟后重新加载它并且加载正常,但大约 5 分钟后再次加载该页面需要几秒钟(不长 - 但我宁愿它不添加每 5 分钟加载第一页需要几秒钟)。
这对我的父亲(企业所有者)来说特别烦人,因为他输入的产品需要 5 分钟以上才能进入,或者在进入时他会休息 2 分钟,然后它要求他点击提交再次登录,同时丢失他的所有数据。我不使用 web.config 的身份验证部分中指定的方法登录 - 我正在使用带有登录按钮的表单,单击它会将输入的用户名和密码与每个用户名和密码进行比较用户(通过 SiteContent.UserManager.Items)。
除此之外,我不知道你想知道什么..你能详细说明你需要知道的任何细节吗?
在进行谷歌搜索时,我发现有一个 executionTimeout 和一个 shutdownTimeout,我将尝试更改它们。
更多细节:
hmm 看来我刚刚解决了页面加载时间问题。我注意到测试数据库超过 13MB,而实时数据库只有 3MB。我对此进行了一些调查。
基本上,错误记录器每次都会记录,如果在目录页面中请求,则无法找到图像。测试站点没有更新图像,因为它不需要,所以丢失的图像表已经上升到 > 10MB.. 必须在测试中禁用图像记录。我从该表中删除了所有内容,现在所有内容都加载得很快。
至于超时的事情,我将把它留到以后 - 当我现在有更重要的事情要优先处理时,我花了太多时间在这上面 - 这个网站实际上是我最后一年的项目在 uni,我在星期五有一个关于它的演示文稿.. 一定会在这篇文章中添加更多详细信息,说明我将来如何解决这个问题,所以请不时回来查看..
感谢您花这么多时间在这上面..
问候,
理查德
【问题讨论】:
-
听起来不像是“超时”问题,更有可能是代码没有按照您的想法执行。你能解释一下页面浏览量之间的数据是如何保留的吗?
标签: .net asp.net vb.net timeout web-config