Сеанс IIS ASP.net пропускает / теряет значения в 5% случаев - PullRequest
0 голосов
/ 02 февраля 2012

Я работаю с IIS V6.0 и ASP.NET с .NET Framework 3.5 с пакетом обновления 1 (SP1).

В большинстве случаев я исправляю проблемы, связанные с потерей ASP.NET переменных сеанса между запросами.Это расстраивает.

Например: у меня есть страница A и страница B. В то время как A дает B объект собственного класса с

Session["something"] = myObject; //on Page A 

, а страница B хочет использовать его таким образом:

MyOwnClass myObject= Session["something"] as MyOwnClass;

Это работает примерно в 95% случаев.Но остальные 5% myObject на B - null, при обновлении страницы это может быть объект, который я снова помещаю в сеанс.

Как это возможно?Что я могу с этим поделать?

Это происходит в разных браузерах.Так что даже компания IE7 не должна быть частью проблемы.Я пробовал различные длины сеанса, но ... ничего.

Ответы [ 2 ]

3 голосов
/ 02 февраля 2012

вероятно, "иногда" myObject не относится к типу MyOwnClass, и поскольку вы используете безопасное приведение, в этом случае вы не получите исключение (безопасное приведение вернет ноль, если объект не является "Castable"). вместо этого попробуйте использовать явное приведение:

try{
    MyOwnClass myObject=(MyOwnClass)Session["something"];
   }
catch(InvalidCastException ex){
    //handle the exception
    }

если это не решит вашу проблему, вы должны убедиться:

  • Вы не перезапускаете пул приложений
  • вы ничего не меняете в своей веб-конфигурации
  • веб-фермы и веб-сады: если вы настроили веб-фермы и веб-сад для своего веб-сайта. Совместное использование сеанса может вызвать проблемы.
  • Процесс w3p вашего сайта перезапускается из-за некоторых проблем в коде. или утечки памяти.
2 голосов
/ 02 февраля 2012

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

Вот руководство для II6 по изменению InProc на StateServer: http://dotnetguts.blogspot.com/2009/06/steps-for-session-inproc-mode-to.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...