由SharePoint 2010的Session引发的Access Violation异常

一个客户的SharePoint w3wp.exe经常crash, 抓来的dump里一堆Access Violation(AV)的mini dump, 最后是一个terminate process的full dump.

配置了一个ADPlus的config文件, 抓来了AV的full dump.

 

发现是由于客户自己写的这样一段代码抛出了AV异常.

HttpContext.Current.Session["Dummy"] = "1";

 

明显这是由于HttpSessionState对象为空导致的异常. 那么为什么这个SharePoint 2010 Web application中的HttpSessionState拿不到呢?

答案是因为SharePoint 2010和SharePoint 2007中, ASP.NET Session State都是默认关掉了的.

 

AsiaTech: Microsoft APGC Internet Developer Support Team发表了一篇文章, 描述了发生在MOSS 2007中的类似问题的解决方案. 那么SharePoint 2010里, 这篇文章的解决方案是否适用呢?

答案是不完全. SharePoint 2010中要想使用ASP.NET Session State的话, 需要开启SharePoint Server ASP.NET Session State Service这个service application. 而这个service application在界面上是无法开启的, 必须通过powershell.

开启的命令如下:

Enable-SPSessionStateService –DefaultProvision

如果想把session state的数据库放到另外的数据库服务器中, 可以变换命令的参数, 如下:

Enable-SPSessionStateService -DatabaseServer YourDBServerName -DatabaseName YourDBName

 

运行上面的命令之后, 已创建的web application的web.config会被自动添加如下的两行:

<sessionState mode="SQLServer" timeout="60" allowCustomSqlDatabase="true" sqlConnectionString="Data Source=sql;Initial Catalog=SessionStateService_b61bfc5803714dad8a5b86e820e42e0e;Integrated Security=True;Enlist=False;Connect Timeout=15" />

<add name="Session" type="System.Web.SessionState.SessionStateModule" />

 

有了Session State Service Application, 要在某个web application中开启session state, 你还得修改它的web.config文件, 把false改为true如下:

image

image

 

好了, 这样改过之后, 这种AV的错误就不会再出现了.

 

参考资料

===========================

Enable ASP.NET Session State on SharePoint 2010 Application

http://nikspatel.wordpress.com/2012/02/12/enable-asp-net-session-state-on-sharepoint-2010-application/ 

Using Session State in SharePoint 2010

http://blogs.msdn.com/b/markarend/archive/2010/05/27/using-session-state-in-sharepoint-2010.aspx

posted on   中道学友  阅读(481)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2010-07-19 如何在WinDBG中切换当前的线程?
2009-07-19 [转]Effective C# 原则7: 选择恒定的原子值类型数据

导航

< 2012年7月 >
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 1 2 3 4
5 6 7 8 9 10 11

技术追求准确,态度积极向上

点击右上角即可分享
微信分享提示