Состояние сеанса может использоваться только тогда, когда для параметра enableSessionState установлено значение true либо в конфигурации
Я работаю над Asp.net MVC 2 с помощью С# с помощью vs 2010. У меня есть указанная ошибка при запуске моего приложения локально в режиме отладки.
Изображение с сообщением об ошибке выглядит следующим образом:
![enter image description here]()
Текст сообщения об ошибке выглядит следующим образом:
Состояние сеанса может использоваться только тогда, когда для параметра enableSessionState установлено значение true, либо в файле конфигурации, либо в директиве "Страница". Пожалуйста, также убедитесь, что System.Web.SessionStateModule или пользовательское состояние сеанса модуль включен в <configuration>\<system.web>\<httpModules>
раздел конфигурации приложения.
Что я сделал для выяснения этой проблемы:
Попробуйте 1: файл web.config был изменен, как показано ниже:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="Session" />
<add name="Session" type="System.Web.SessionState.SessionStateModule, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</modules>
</system.webServer
Попробуйте 2, как показано ниже:
![enter image description here]()
Но, к сожалению, у меня такая же проблема, о которой я упомянул выше.
UPDATE
![enter image description here]()
У вас есть решение для этого?
Ответы
Ответ 1
Вы также включили состояние сеанса в этом разделе?
<system.web>
<pages enableSessionState="true" />
</system.web>
Или вы добавили это на страницу?
<%@Page enableSessionState="true">
И вы подтвердили, что служба ASP.NET Session State Manager Service
запущена? На скриншоте это не так. Он установлен в режим запуска Manual
, который требует, чтобы вы запускали его каждый раз, когда хотите его использовать. Чтобы запустить его, выделите службу и нажмите зеленую кнопку воспроизведения на панели инструментов. Чтобы запустить его автоматически, отредактируйте свойства и настройте тип запуска.
Или установите для свойства режима SessionState значение InProc
, чтобы служба состояния не требовалась.
<system.web>
<sessionState mode="InProc" />
</system.web>
Отметьте MSDN для всех доступных вам параметров в отношении хранения данных в состоянии сеанса ASP.NET.
Примечание. Лучше, чтобы ваш контроллер извлек значение из сеанса и добавьте значение в модель для вашей страницы/элемента управления (или в ViewBag), таким образом, представление не зависит от HttpSession и вы можете выбрать другой источник для этого элемента позже с минимальными изменениями кода. Или даже лучше, вообще не использовать состояние сеанса. Он может убить вас, когда вы используете много асинхронных вызовов javascript.
Ответ 2
также, если вы используете SharePoint и сталкиваетесь с этой ошибкой, не забудьте запустить
Enable-SPSessionStateService -DefaultProvision
или вы продолжите получать вышеуказанное сообщение об ошибке.
Ответ 3
Фактически jessehouwing
дал решение для обычного сценария.
Но в моем случае я включил 2 типа сеанса в моем web.config file
Это как показано ниже.
Первый:
<modules runAllManagedModulesForAllRequests="true">
<remove name="Session" />
<add name="Session" type="System.Web.SessionState.SessionStateModule, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</modules>
Второй:
<sessionState mode="Custom" customProvider="DefaultSessionProvider">
<providers>
<add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="PawLoyalty" applicationName="PawLoyalty"/>
</providers>
</sessionState>
Так что в моем случае я должен прокомментировать Второе. Это то, что нужно для производства. Когда я прокомментировал вторую, моя проблема исчезла.
Ответ 4
В моем случае проблема исчезла просто с помощью HttpContext.Current.Session
вместо Session
Ответ 5
Я хочу, чтобы все знали, что иногда эта ошибка просто является результатом какой-то странной ошибки памяти. Перезагрузите компьютер и вернитесь в визуальную студию, и он исчезнет! Bizarre!
Попробуйте это, прежде чем начинать играть со своим файлом веб-конфигурации и т.д., Как я сделал!!!!; -)
Ответ 6
Я понимаю, что есть принятый ответ, но это может помочь людям. Я обнаружил, что у меня была аналогичная проблема с сайтом ASP.NET с использованием среды NET 3.5 при ее запуске в Visual Studio 2012 с использованием IIS Express 8. Я пробовал все вышеупомянутые решения, и никто не работал - в конце концов, встроенный веб-сервер VS 2012. Не знаю, почему, но я подозреваю, что это была связь между 3.5 framework и IIS 8.
Ответ 7
Для SharePoint
Можно найти файл веб-конфигурации в каталоге C:\inetpub\wwwroot\wss\VirtualDirectories\Sitecollection
- и внести изменения
<system.web>
<pages enableSessionState="true" />
</system.web>
и с помощью командной консоли SharePoint выполните команду ниже
Enable-SPSessionStateService -DefaultProvision
Ответ 8
Следующий ответ ниже заданный путь работал нормально.
Я нашел решение, которое отлично работало! Добавьте в web.config следующее:
<system.webServer>
<modules>
<!-- UrlRewriter code here -->
<remove name="Session" />
<add name="Session" type="System.Web.SessionState.SessionStateModule" preCondition="" />
</modules>
</system.webServer>
Надеюсь, это поможет кому-то еще!
Ответ 9
У меня есть эта ошибка только при отладке приложения ASP.Net.
У меня также были Session["mysession"]
типы переменных, добавленные в мой Watch of Visual Studio.
проблема была решена. Однажды я удалил переменные сеанса из просмотра.
Ответ 10
- Возможно, ваш скайп перехватил ваши запросы на 80-м порту, в настройках Skype снимите флажок
- Или ваш IE имеет подключение, установленное для прокси-сервера, когда нет прокси-сервера
- Или ваш скрипач может перехватить и действовать как прокси, снимите его!
Решает вышеупомянутую проблему, она решила мою!
HydTechie
Ответ 11
Эта ошибка была поднята для меня из-за необработанного исключения, созданного функцией конструктора Public Sub New()
(Visual Basic) на веб-странице в коде.
Если вы реализуете функцию конструктора, оберните код в оператор Try/Catch и посмотрите, разрешает ли он проблему.
Ответ 12
Состояние сеанса может быть нарушено, если в Web.Config есть следующее:
<httpModules>
<clear/>
</httpModules>
Если это так, вы можете захотеть прокомментировать такой раздел, и вам не понадобятся какие-либо другие изменения, чтобы исправить эту проблему.