在SharePoint 2010中启用会话状态?

时间:2010-02-10 15:31:51

标签: c# .net session-state sharepoint-2010 session-variables

我有一个为SharePoint 2007构建的Web服务,我正在尝试移植到SharePoint 2010.此Web服务依赖于会话状态才能正常运行,但到目前为止,我已启用会话状态才能正常工作在SharePoint 2010中。此Web服务在t下作为自己的Web应用程序运行 他/_vti_bin虚拟目录。我已经尝试了以下所有但没有运气:

  • 确保“State Service”服务应用程序正在运行。
  • System.Web.SessionState.SessionStateModule http模块添加到我的应用程序的web.config文件中。
  • System.Web.SessionState.SessionStateModule http模块添加到我的SharePoint根web.config文件中。
  • <pages enableSessionState="true" />添加到我的应用程序的web.config文件中。
  • <pages enableSessionState="true" />添加到我的根web.config文件中。

其他环境信息:

  • Visual Studio 2008 - SP1
  • .NET 3.5 - SP1
  • SharePoint 2010 - RC
  • Windows Server 2008 R2
  • ASMX网络服务(不是WCF)

有没有人有幸运行Web应用程序 Web服务以在SharePoint 2010中使用会话状态?

谢谢!

史蒂夫

5 个答案:

答案 0 :(得分:11)

你已经在互联网上的其他地方自己回答了这个问题。 :)

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

然后,您必须进入Web应用程序并将相同的会话状态模块添加到IIS7管理的管道。

  1. 打开IIS 7管理器,找到您的Web应用程序。

  2. 双击IIS部分中的“模块”。

  3. 点击右侧窗格中的“添加托管模块...”。

  4. 在“添加托管模块”对话框中,为名称输入"SessionState"或类似内容,然后从下拉列表中选择以下项目:

      

    System.Web.SessionState.SessionStateModule,System.Web,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a

  5. 之后,应为您的网络应用/网络服务启用会话状态!

答案 1 :(得分:6)

您可能需要启用会话状态服务。使用PowerShell cmdlet Enable-SPSessionStateService。这将创建会话状态数据库并在SharePoint 2010中启动该服务。

参考资料: http://technet.microsoft.com/en-us/library/ee890113.aspx

答案 2 :(得分:2)

答案 3 :(得分:1)

Joshua的解决方案帮助我指明了方向,但我不得不为我的场景做一些变化 - 一个部署到_layouts文件夹的ASP.NET 3.5网站。

以下是对我有用的步骤:

  1. 将网站的web.config中的<pages>标记更改为<pages enableSessionState="true" />

  2. 在Sharepoint网站级别(不是整个IIS级别 - 添加了 System.Web.SessionState.SessionStateModule 模块 - 这会破坏管理中心,我尝试:()按照@Joshua的解决方案。如果您要部署Web应用程序而不是Web站点,则需要在Web应用程序级别添加它。

  3. 将下面的SessionState HTTPModule添加到web.config似乎对我没有影响,可能是因为我使用的是Sharepoint的web.config,因为我的项目是一个Web站点而不是Web应用程序。在这个问题上不太清楚。

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

答案 4 :(得分:0)

如下所示:

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

modules是一个xml标记。我不知道为什么,这篇文章没有采用xml标签..

由于

卡罗尔