我有一个为 SharePoint 2007 构建的 Web 服务,我正在尝试将其移植到 SharePoint 2010。此 Web 服务依赖于会话状态才能正常运行,但到目前为止,我已经能够使会话状态在 SharePoint 2010 中正常工作。该网络服务作为自己的网络应用程序运行在 他 /_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 Web 服务(不是 WCF)

有没有人有幸获得网络应用程序 或者 Web 服务在 SharePoint 2010 中使用会话状态了吗?

谢谢!

史蒂夫

有帮助吗?

解决方案

您已经在互联网上的其他地方亲自回答过这个问题。:)

<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 服务启用会话状态!

其他提示

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

参考信息:http://technet.microsoft.com/en-us/library/ee890113.aspx

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

以下是对我有用的步骤:

  1. 改变了 <pages> 网站 web.config 中的标记 <pages enableSessionState="true" />

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

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

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

如下所示:

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

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

谢谢

颂歌

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top