Вопрос

У меня есть веб-сервис, созданный для SharePoint 2007, который я пытаюсь перенести в SharePoint 2010.Правильная работа этой веб-службы зависит от состояния сеанса, но до сих пор мне удавалось заставить состояние сеанса вообще работать в SharePoint 2010.Этот веб-сервис работает как собственное веб-приложение под управлением t он /_vti_bin виртуальный каталог.Я перепробовал все нижеперечисленное, но безуспешно:

  • Убедился, что сервисное приложение "Государственная услуга" запущено.
  • Добавил 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)

Кому-нибудь повезло с получением веб-приложения или веб-служба уже использует состояние сеанса в SharePoint 2010?

Спасибо!

Стив

Это было полезно?

Решение

Вы уже сами ответили на этот вопрос где-то в другом месте интернета.:)

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

ЗАТЕМ вы должны зайти в свое веб-приложение и добавить тот же модуль состояния сеанса в управляемый конвейер IIS7.

  1. Откройте диспетчер IIS 7 и найдите свое веб-приложение.

  2. Дважды щелкните "Модули" в разделе IIS.

  3. Нажмите "Добавить управляемый модуль ..." на правой панели.

  4. В диалоговом окне "Добавить управляемый модуль" введите "SessionState" или что-то в этом роде для имени, и выберите следующий элемент из выпадающего списка:

    System.Web.Состояние сеанса.Модуль SessionStateModule, System.Веб, Версия= 2.0.0.0, Культура = нейтральная, PublicKeyToken=b03f5f7f11d50a3a

После этого состояние сеанса должно быть включено для вашего веб-приложения / веб-сервиса!

Другие советы

Возможно, вам потребуется включить службу состояния сеанса.Используйте командлет PowerShell Enable-SPSessionStateService.Это позволит создать базу данных состояний сеанса и запустить службу в SharePoint 2010.

Справочная информация:http://technet.microsoft.com/en-us/library/ee890113.aspx

Лучшая ссылка, которую я видел по этому поводу, находится здесь: http://blogs.msdn.com/b/markarend/archive/2010/05/27/using-session-state-in-sharepoint-2010.aspx

Решение Джошуа помогло мне направить меня в правильном направлении, но мне пришлось внести некоторые изменения в свой сценарий - веб-сайт ASP.NET 3.5, развернутый в папке _layouts.

Вот шаги, которые сработали у меня:

  1. изменил <pages> добавьте тег в web.config для веб-сайта, чтобы <pages enableSessionState="true" />

  2. Добавил System.Web.SessionState.Модуль SessionStateModule модуль на уровне веб-сайта Sharepoint (не на всем уровне IIS - это нарушит работу центра администрирования, я попробовал :( ) согласно решению @Joshua.Если вы развертываете веб-приложение вместо веб-сайта, вам захочется добавить его на уровне вашего веб-приложения.

Добавление приведенного ниже HttpModule SessionState в web.config, похоже, не возымело эффекта для меня, вероятно, потому, что я работал с web.config Sharepoint, поскольку мой проект был веб-сайтом, а не веб-приложением.Не слишком ясно в этом вопросе.

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

Сделайте, как показано ниже:

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

modules - это xml-тег.Я не знаю почему, но в этом посте нет xml-тегов..

Спасибо

Кэрол

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top