最近遇到一个问题严重的问题:.net 1.1 的网站使用 sqlserver存储session,出错,提示找不到 dbo.TempGetID 的存储过程。经过一番学习,发现原来这个还是个bug。
在.net 早期版本中,sqlserver 存储只能放在一个aspstate的数据库里,并且访问数据库的架构只能是 dbo。如果不符合上述条件,都会导致运行出错。
微软对此问题相关修正:
http://support.microsoft.com/kb/836680/zh-cn
, FIX: 使用一个 SQL 数据库所有用于 SQLServer 会话状态可能引起瓶颈。这篇文章里描述了如何把sessionstate 存储在非aspstate的数据库里。首先要把服务器.net升级,至少要到1.1.4322.1014 以上的版本,并且修改Installpersistsqlstate.sql的文件。最后在web.config sessionstate 中添加一个
allowCustomSqlDatabase = " true "
来自定义数据库。
但是对于 dbo的架构,我没有找到地方修改,所以最后还是没有办法正常起来。
.net 2.0的,我sqlserver 存储,我还没有了解过。一般都用stateserver这个。