9

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

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

附加环境信息:

  • 视觉工作室 2008 - SP1
  • .NET 3.5 - SP1
  • SharePoint 2010 - RC
  • 视窗服务器 2008 R2
  • ASMX Web 服务(不是 WCF)

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

谢谢!

史蒂夫

4

5 回答 5

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,版本=2.0.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a

之后,应该为您的 Web 应用程序/Web 服务启用会话状态!

于 2010-03-08T14:02:58.003 回答
6

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

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

于 2010-09-09T17:24:02.117 回答
2

我在这里看到的最好的链接是:http: //blogs.msdn.com/b/markarend/archive/2010/05/27/using-session-state-in-sharepoint-2010.aspx

于 2011-02-25T14:38:18.753 回答
1

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

以下是对我有用的步骤:

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

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

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

<httpModules> 
    <add name = "Session" type = "System.Web.SessionState.SessionStateModule" /> 
</httpModules>
于 2010-04-21T08:35:25.700 回答
0

像下面这样:

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

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

谢谢

颂歌

于 2010-06-24T02:37:32.153 回答