Подтвердить что ты не робот

Состояние сеанса может использоваться только тогда, когда для параметра 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

У вас есть решение для этого?

4b9b3361

Ответ 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>

Если это так, вы можете захотеть прокомментировать такой раздел, и вам не понадобятся какие-либо другие изменения, чтобы исправить эту проблему.