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

Я перемещаю 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 из здесь я получаю следующее сообщение об ошибке в первый раз (каждый раз) после перезапуска сервера, времени ожидания сеанса или приложения обновление бассейна.

Невозможно использовать сервер состояний сеанса, так как эта версия ASP.NET требуется версия сервера состояния сеанса 2.0 или выше. [At System.Web.SessionState.OutOfProcSessionStateStore.MakeRequest (StateProtocolVerb глагол, строковый идентификатор, StateProtocolExclusive exclusiveAccess, Int32 extraFlags, Int32 тайм-аут, Int32 lockCookie, Byte [] buf, Int32 cb, Int32 networkTimeout, SessionNDMakeRequestResults & results) в System.Web.SessionState.OutOfProcSessionStateStore.SetAndReleaseItemExclusive (HttpContext контекст, строковый идентификатор, SessionStateStoreData item, Object lockId, Boolean newItem) в System.Web.SessionState.SessionStateModule.OnReleaseState (Объект источник, EventArgs eventArgs) в System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () в System.Web.HttpApplication.ExecuteStep (IExecutionStep шаг, логическое и завершено синхронно) ]

Я нашел еще 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 Ответ

0 голосов
/ 06 мая 2011

Ну, я сгорел один из наших инцидентов поддержки, связавшись с 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 также не будет отвечать на команду остановки, поскольку пытается выполнить всю свою работу в основном потоке.

...