Невозможно использовать сервер состояния сеанса, поскольку для этой версии ASP.NET требуется сервер состояния сеанса версии 2.0 или выше.

Я перевожу 2 веб-сайта.NET с одного сервера Windows 2003 (IIS6) на другой. Один из сайтов - это.NET 2.0, а другой -.NET 3.5. Я использую режим StateServer состояния сеанса ASP.NET со следующими параметрами в глобальном файле web.config (в каталоге C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\). Состояние сеанса отлично работает на старом сервере.

<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424"/>

Однако после установки.NET 2.0 и.NET 3.5 SP1 Framework отсюда, я получаю следующее сообщение об ошибке в первый раз (каждый раз) после перезапуска сервера, времени ожидания сеанса или обновления пула приложений.

Невозможно использовать сервер состояния сеанса, так как для этой версии ASP.NET требуется сервер состояния сеанса версии 2.0 или выше.[At System.Web.SessionState.OutOfProcSessionStateStore.MakeRequest (глагол StateProtocolVerb, идентификатор строки, StateProtocolExclusive exclusiveAccess, дополнительные_файлы Int32, время ожидания Int32, Int32 lockCookie, Byte[] buf, Int32 cb, Int32 networkTimeout, SessionNDMakeRequestResults& results) в System.Web.SessionState.OutOfProcSessionStateStore.SetAndReleaseItemExclusive(контекст HttpContext, идентификатор строки, объект SessionStateStoreItate.tateState.tateState.tateState.tateDataStateStateStateState.tateData для объекта SessionStateStateState.tateDataStateStateStateDtate)..OnReleaseState(Источник объекта, EventArgs, eventArgs) в System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() в System.Web.HttpApplication.ExecuteStep(IExecuynchronanStep)

Я нашел 2 других сообщения с похожими симптомами, однако ни один из них не дал решения, которое сработало.

  1. Невозможно использовать сервер состояния сеанса.... требуется сервер состояния сеанса версии 2.0 или выше.
  2. Невозможно использовать Session State Server

Пока что я пробовал:

  1. Использование aspnet_regiis -ua с последующим aspnet_regiis -i -enable
  2. Удаление и повторная установка.NET 3.5 SP1 и.NET 2.0
  3. Явно устанавливая для атрибута httpRuntime enableVersionHeader значение true

Примечание. Я также настроил атрибут MachineKey в файле web.config каждого приложения, как описано в этой статье MSDN. Это то, что я работал на старом сервере, который был скопирован точно так же, как это было раньше.

Я заметил, что когда я установил только.NET 2.0, проблема полностью исчезла. Он появился только после того, как я установил.NET 3.5 SP1. К сожалению, одно из приложений зависит от.NET 3.5 для некоторых его функций, поэтому оставлять его удаленным нельзя.

Любые идеи, как я могу диагностировать и исправить эту проблему?

1 ответ

Решение

Ну, я сгорел один из наших инцидентов поддержки, связавшись с Microsoft по этой проблеме. После 12 часов устранения неполадок проблема все еще не решена.

Когда я начал задаваться вопросом, была ли это вообще проблема с Windows, я обнаружил еще один пост с кем-то с точно такой же проблемой:

Проблемы с версией ASP.NET State Service; Государственная служба 1,1, веб-сайт 3,5

Так что, похоже, это ошибка в последней версии Virtuozzo.

Я закончил тем, что создал службу Windows, которая запускает следующие 3 команды во время запуска сервера. Хотя я пытался использовать файлы.bat и использовать запланированные задачи Windows для запуска команд, я не мог заставить его работать. Создание и отладка этой простой службы Windows заняло около 5 часов, что, вероятно, потребовало меньше времени, чем потребовалось бы для определения и назначения правильных разрешений Windows, чтобы запустить его в рамках запланированных задач.

C:\Windows\System32\SC.EXE CONFIG aspnet_state binPath= "C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_state.exe"

C:\Windows\System32\NET.EXE stop aspnet_state

C:\Windows\System32\NET.EXE start aspnet_state

Обратите внимание, что я, вероятно, мог сделать так, чтобы aspnet_state зависело от моей службы Windows, поэтому мне не пришлось бы перезапускать aspnet_state, но я не был уверен, что настройки зависимостей также будут сброшены при перезагрузке, и сделать это таким образом означало, что мне нужно было только установить обслуживание и никакая другая ручная настройка.

Обратите внимание, что я также попробовал RunAsService, чтобы мне не пришлось ничего создавать самостоятельно. Однако автору этой службы не удалось понять, что служба Windows по определению является многопоточной. Я перезагрузил сервер, и это привело к тому, что Windows не запустилась, потому что у службы недостаточно прав для запуска настроенных команд. К счастью, у меня была резервная копия, или мне пришлось бы восстанавливать свой VPS с нуля. RunAsService также не будет отвечать на команду остановки, поскольку он пытается выполнить всю свою работу в основном потоке.

Другие вопросы по тегам