时间:2011-06-16 16:03:04

标签: asp.net

我有一个网站,其中用户的ID保存在会话对象中 并且用户执行的任何操作都会测试会话以查看它是否为空 有时,在其中一个用户操作中发生异常,然后抛出所有会话 是什么让所有用户被抛出登录页面,这是一个非常严重的问题。 我必须找到失败抛出所有会话的情况 我有一个样本错误发生在我身上,不确定这些情况是否是原因: 例如:

  1. 未将对象引用设置为对象的实例。
  2. 这是一个无效的脚本资源请求。 在System.Web.Handlers.ScriptResourceHandler.Throw404()
  3. 这是一个无效的网络资源请求。 在System.Web.Handlers.AssemblyResourceLoader.System.Web.IHttpHandler.ProcessReques
    (HttpContext context)
  4. 通常只允许使用每个套接字地址(协议/网络地址/端口) 127.0.0.1:3306
  5. 无效的视图状态。客户IP:77.127.17.24
  6. 简而言之,我该怎么办? 从哪里开始寻找? 谢谢 米莎

3 个答案:

答案 0 :(得分:0)

根据您的设置,这可能非常有用:Configure SQL Server to Store ASP.NET Session State

答案 1 :(得分:0)

在global.asax中设置一个全局错误处理程序,以便优雅地处理这些错误 当然 - 使用提供的堆栈跟踪检查这些错误的来源,以完全避免它们。

答案 2 :(得分:0)

听起来您的应用池正在回收。

如果会话配置为正在进行且您的应用池已回收,那么您将丢失所有会话信息。从你的其他问题来看,这听起来很有可能。

我要做的第一件事就是将sql server作为后备存储,将会话移出进程。通过这种方式,他们可以在应用程序池中循环使用并缓解问题。

接下来,您将想知道应用程序池回收的原因。应用程序池通常配置为在某些条件下进行回收,例如高内存使用或代码部署。分析应用程序以查看您是否未正确处理对象;数据库连接是主要连接。还有其他的回收触发因素,例如按计划等等。

如果出于某种原因由于代码部署而出现这种情况,那么我建议您在新代码丢失时设置计划维护期。