带有allowCustomSqlDatabase =“true”的ASP.NET SessionState不
这里的Microsoft文档
http://msdn.microsoft.com/en-us/library/h6bb9cz9(v=vs.90).aspx 和几篇SO文章表明,在ASP.NET web.config文件的sessionState声明中指定allowCustomSqlDatabase =“true”将允许我使用默认的ASPState数据库覆盖并指定我自己的数据库名称. 我在web.config文件中设置了这些属性. <sessionState allowCustomSqlDatabase="true" mode="SQLServer" sqlConnectionString="Data Source=mysqlservername;Initial Catalog=DR_ASPState;Integrated Security=true;Connect Timeout=15;" /> 当我尝试调出默认网站页面时,收到一条错误消息,指出无法访问ASPState数据库. 我已使用SQL事件探查器监视SQL流量,并注意到此故障是由此请求引起的: SELECT @appId = AppId FROM [ASPState].dbo.ASPStateTempApplications WHERE AppName = @appName 我已经回收了应用程序池并重新启动了IIS,试图刷新可能存在的任何缓存的数据库名称引用,但这没有帮助.我的理解是ASP.NET SessionState将使用我指定的数据库名称DR_ASPState来生成它用于连接到SessionState数据库的SQL语句.但看起来似乎[ASPState]被硬编码到框架中. 任何人都可以发现我做错的任何事情或提供有关如何解决这个问题的有用的故障排除信息吗? 解决方法
我发现了这个问题.我们的IT团队通过恢复现有ASPState数据库的备份创建了自定义ASP会话状态数据库DR_ASPState.但是,仅提供不同的名称不会更改使用硬编码数据库引用生成的存储过程.
该网站正在调用我的连接字符串中定义的正确备用数据库DR_ASPState.但是,.NET命令生成的至少一个存储过程在存储过程语句中具有硬编码的数据库名称. 使用SQL事件探查器,我发现这是使用重命名的数据库导致问题的语句 declare @p2 int set @p2=NULL exec dbo.TempGetAppID @appName='/LM/W3SVC/10/ROOT',@appId=@p2 output select @p2 检查存储过程dbo.TempGetAppID显示如下语句: SELECT @appId = AppId FROM [ASPState].dbo.ASPStateTempApplications WHERE AppName = @appName 根据此处.NET文档中的说明,通过正确安装DR_ASPState作为新数据库,可以正确解决此问题. http://msdn.microsoft.com/en-us/library/ms229862(v=vs.80).aspx 该声明应该从我们的Web服务器执行. aspnet_regsql.exe -S *servername* -E -ssadd -sstype c –d DR_ASPState (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 自定义elmah.axd输出字段
- 是否可以将多个模型对象发送到ASP.NET MVC视图?
- asp.net-mvc – 在asp.net mvc中启动一组未选中的radiobutt
- 通过ASP.NET运行时将IIS7配置为服务器静态内容
- asp.net-mvc – 使用asp.net mvc操作过滤器的奇怪行为Attri
- ASP.NET Base-64字符串中的字符无效
- ASP.NET C#OutofMemoryException大文件上载
- asp.net-mvc-3 – ASP.NET MVC – 如何防止双击提交与jquer
- 数据注释 – MVC3中的ModelState.IsValid vs IValidateable
- ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 13. 安装