Приложение ASP.NET с поврежденным состоянием просмотра каждые несколько минут - PullRequest
1 голос
/ 24 января 2010

У меня проблема с веб-приложением, которым я управляю. Пользователи, периодически получающие следующую ошибку:

Ошибка проверки состояния MAC-адреса. Если это приложение размещено в сети Ферма или кластер, убедитесь, что конфигурация указывает тот же validationKey и validation алгоритм. Автогенерация не может быть использована в кластере.

Проблема в том, что это не кластер - это один сервер Windows 2003. После копания получается, что добавление раздела machineKey и некоторых дополнительных атрибутов к директиве Pages в моем web.config устраняет эту ошибку:

<machineKey validationKey='MACHINE KEY SNIPPED'
        decryptionKey='DECRYPTION KEY SNIPPED'
        validation='SHA1'/>

<pages validateRequest="true" enableEventValidation="false">

После изменения этих двух вещей в моем web.config ошибка исчезла, но теперь у меня возникла новая проблема - вместо ошибки, что мое представление состояния недопустимо, приложение просто «забывает», кто мой пользователь и отправляет их обратно на страницу входа . Теперь пользователи просматривают приложение, а затем они неожиданно отправляются на страницу входа, даже после того, как они уже вошли в систему в течение нескольких минут. Хотя я не могу заставить это произойти, обычно это происходит при посещении 10-12 различных страниц, поэтому довольно часто.

Мне бы хотелось решить эту проблему - кто-нибудь знает, что еще может вызывать ошибку viewstate на одном сервере или что я могу сделать, чтобы убедиться, что она проверена правильно?

Ответы [ 2 ]

3 голосов
/ 24 января 2010

Звучит так, как будто рабочий процесс сам себя перерабатывает (если вы храните состояние сеанса в процессе). Выбор фиксированного ключа означает, что состояние представления все еще действует, когда процесс возвращается, но вы потеряли состояние сеанса. Вы могли бы попытаться сохранить состояние сеанса в базе данных, но я был бы более заинтересован, чтобы решить основную проблему. Ваше приложение внезапно выделяет большие объемы памяти или что-то в этом роде? Есть ли что-нибудь подозрительное в журнале событий?

0 голосов
/ 28 января 2010

Оказалось, что это началось, когда я добавил дополнительные работающие процессы в пул приложений, в котором выполнялось наше приложение. Поскольку состояние сеанса хранилось в InProc (а не в службе состояний или SQL Server), он терял отслеживание того, кем был пользователь, когда он переключал их между рабочими процессами. На данный момент снижение числа процессов на нашем сервере до одного исправило проблему, поскольку повышение ее, по-видимому, не принесло никаких улучшений.

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