После развертывания моего веб-сайта к IIS я получаю следующее сообщение об ошибке при попытке получить доступ к сессии:
Состояние сеанса может только использоваться, когда enableSessionState имеет значение true, или в конфигурационном файле или в директиве Page. Также удостоверьтесь та Система. Сеть. SessionStateModule или пользовательский модуль состояния сеанса включены в \\раздел в конфигурации приложения.
Я получаю доступ к нему в Page_Load
или PreRender
события (я попробовал обе версии). С Visual Studio Сервер Dev это работает без проблемы. Я попробовал обоих InProc
SessionState
устройство хранения данных, 1 и несколько рабочих процессов. Я добавил a enableSessionState = "true"
к моей веб-странице явно. Вот часть web.config
:
Что еще я должен сделать, чтобы заставить его работать?
Я пытался контролировать, если IIS получает доступ aspnet_client
папка с Монитором Процесса и не получила доступа.
Решение оказалось очень любопытным. Хотя в описании ошибки IIS7 jn WIndows 2008R2 сказано добавить SessionStateModule в раздел system.web, его следует добавить в раздел system.webServer.
<system.webServer>
<modules>
<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>
Сеансы должны работать в простом, пустом приложении. То есть все значения по умолчанию должны работать.
Если он не работает с базовыми тестовыми приложениями, возможно, IIS перепутали с вашим приложением.
Попробуйте удалить приложение IIS. Затем создайте новый виртуальный каталог, перезапустите IIS и снова добавьте свое приложение.
Также дважды проверьте настройки ASP.Net вашего приложения. Убедитесь, что установлена правильная версия ASP.Net.
Во время поиска я также наткнулся на ...
http://ramonaeid.spaces.live.com/blog/cns!A77704F1DB999BB0!181.entry
Надеюсь, это поможет.
Убедитесь, что служба "ASP.NET State Service" запущена, а затем добавьте это в ваш web.config.
<sessionState mode="InProc" server="127.0.0.1" port="42424" ... >
Ссылка:
http://msdn.microsoft.com/en-us/library/ms972429.aspx
http://msdn.microsoft.com/en-us/library/h6bb9cz9(VS.71).aspx
Комментарий:
Возможно, лучше вручную изменить порт на что-то другое. Это можно сделать с помощью regedit.
HKLM\Syste\CurrentControlSet\Services\aspnet_state\Parametres\Port -> 42424
Some more infos:
Использовался ли этот конкретный сервер для чего-либо еще? Это сервер Windows 2008 и IIS7?
Я готов поспорить, что вам не хватает некоторых ролей сервера для IIS, вы проверили их, щелкнув правой кнопкой мыши «Компьютер», выбрав «Управление», перейдя к управлению ролями (оно находится в основном дереве в диспетчере компьютеров) и проверив установленные биты для IIS?
Если это IIS6, то у вас могут быть другие проблемы. Но я полагаю, что мы начнем с чего-то простого, посмотрите, не сможем ли мы помочь вам разобраться в этом.
Какова структура ваших папок. Есть ли у вас веб-конфиги в более высокой папке, которые могли явно отключить это?
Если возможно, перерегистрируйте asp.net
Open Control Panel
Programs\Turn Windows Features on or off
Internet Information Services
World Wide Web Services
Application development Features
ASP.Net <-- check mark here
ссылка: Как зарегистрировать ASP.NET 2.0 на веб-сервере (IIS7)?
Попробуйте добавить в раздел страниц в web.config следующий раздел:
<namespaces>
<add namespace="System.Web.SessionState" />
<namespaces/>