Asp.net mvc 查找会话状态的所有用法

Asp.net mvc 查找会话状态的所有用法,asp.net-mvc,vb.net,Asp.net Mvc,Vb.net,我正在寻找一些关于如何在现有asp.net(MVC)应用程序中快速找到会话状态的所有用法的聪明想法 所讨论的应用程序是外包开发的主题,并且在生产中运行良好。但我们最近意识到它使用的是InProc会话状态,而不是(我们首选的路由)StateServer 在一个小规模的测试中,我们将它切换到StateServer,并且一切正常。然而,当我们部署到生产环境时,我们突然遇到了大量错误。我不确定这些错误是否是由此更改引起的(他们实际上是在抱怨数据库级别的问题),但是删除此更改允许应用程序再次运行(这可能只

我正在寻找一些关于如何在现有asp.net(MVC)应用程序中快速找到会话状态的所有用法的聪明想法

所讨论的应用程序是外包开发的主题,并且在生产中运行良好。但我们最近意识到它使用的是InProc会话状态,而不是(我们首选的路由)StateServer

在一个小规模的测试中,我们将它切换到StateServer,并且一切正常。然而,当我们部署到生产环境时,我们突然遇到了大量错误。我不确定这些错误是否是由此更改引起的(他们实际上是在抱怨数据库级别的问题),但是删除此更改允许应用程序再次运行(这可能只是因为它导致了循环)

因此,在我再次尝试切换之前,我想对会话中放置的所有对象执行一次彻底的审核(我之前快速查看了几个控制器,它们看起来很好)。如果我对代码有完全的控制权,在这里我只需注释掉类(编译并找到到达会话类的各种方式),然后注释掉访问器,点击compile并访问每个错误。但我不能用内置的.NET框架类型来实现这一点

那么,关于如何找到每种用法,有什么聪明的想法吗


我决定尝试使用反射器。我分析了以下各项的“使用人”:

System.Web.HttpSessionStateBase.set_Item(String, Object) : Void
System.Web.SessionState.HttpSessionState.set_Item(String, Object) : Void
System.Web.SessionState.HttpSessionState.set_Item(Int32, Object) : Void
System.Web.HttpSessionStateBase.set_Item(Int32, Object) : Void
System.Web.HttpSessionStateBase.Add(String, Object) : Void
System.Web.SessionState.HttpSessionState.Add(String, Object) : Void

(并检查我们在任何地方都不使用TempData)。我是否错过了项目可以在会话中结束的任何其他路径?

我建议在解决方案范围内搜索“会话”。此外,如果这是ASP.NETMVC应用程序,那么不要忘记TempData也是会话

您可以获取asp.net MVC的源代码。寻找会话的用法

对于MVC3 对于MVC2 对于MVC1

事实上,我发现,当你需要了解某些东西为什么会这样做的时候,这些方法非常有用

MVC2不会在会话关闭的情况下运行,因此它可能以与stateserver不兼容的方式使用会话

从数据库错误来看,听起来nHibernate可能在做什么。您也可以查看一下它的源代码,但我相信它对会话的使用将被记录下来


西蒙

我得到了很多误报——nHibernate有很多工作,它也谈到了会话。啊!nHibernate会议。使用nhibernate会话的层是否有可能不尝试使用web会话(仅限于数据操作)。如果是,则可以将搜索限制为仅搜索web project。您可以创建自己的SessionState提供程序,该提供程序包装InProc提供程序,但会记录每次添加、获取和删除的调用。这样,您就可以使用调用堆栈来跟踪代码中会话的每次使用情况。