Включение состояния сеанса в SharePoint 2010?
-
19-09-2019 - |
Вопрос
У меня есть веб-сервис, созданный для 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.
Откройте диспетчер IIS 7 и найдите свое веб-приложение.
Дважды щелкните "Модули" в разделе IIS.
Нажмите "Добавить управляемый модуль ..." на правой панели.
В диалоговом окне "Добавить управляемый модуль" введите
"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.
Вот шаги, которые сработали у меня:
изменил
<pages>
добавьте тег в web.config для веб-сайта, чтобы<pages enableSessionState="true" />
Добавил 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-тегов..
Спасибо
Кэрол