2013-06-07 1 views
2

Ситуация:"Валидация ViewState MAC не удалось" с Kentico 7.0 и IIS 7.5

Мы 2 Вебсервер IIS7.5 которые работают loadbalanced (программное обеспечение, стандартная установка) каркас 4,5 установлен

У нас есть установка Kentico 7.0 на обоих серверах.

Проблема:

Нагрузка сайта нормально, но когда я изменить к CMSDesk и попытаться войти в систему (с IE8), я получаю сообщение об ошибке (очень быстро нет, даже второй):

Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster. 

Eventlog

Event code: 4009 
Event message: Viewstate verification failed. Reason: The viewstate supplied failed integrity check. 

с Chrome 27+ это занимает около 3-4 секунд, но появляется CMSDesk (только иногда появляется ошибка, я могу» t сказать, когда?!). Вот почему я могу исключить проблему IE8

Теперь это становится действительно жутким, , даже если я выйду на сервер из Loadbalancer!

Что я пробовал:(Все эти эксперименты я пробовал в различных комбинациях)

0) гуглом, как сумасшедшие, переработанные в AppPool и очистить кэш. ОСНОВЫ

1) Установите MachineKey элемент в

machine.config's (rebooted the servers afterwards) 
%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\config\machine.config 
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\config\machine.config 
%SystemRoot%\Microsoft.NET\Framework64\v2.0.50727\config\machine.config 
%SystemRoot%\Microsoft.NET\Framework64\v4.0.30319\config\machine.config 

Example Code (in all Files the SAME KEYS) 
<system.web> 
    <machineKey validationKey="EEF33150A048D162D22CB36E1CB9956B148C7A4E6999D0F05B53D416D7A16F83823DD626F501DD3549D3E5DCB473634739D0AD9A07F71560946498C943A7586D" 
    decryptionKey="0E95F75864047EB6322EA7D5246F2C1175D77A1B016F293C3BAAD000299A3DC8" 
    validation="SHA1" 
    decryption="AES" /> 
</system.web> 

Результат: Ошибка же

2) я даже установить его в WebConfig (просто чтобы быть уверенным).

Результат: Ошибка же

3) я установить атрибут enableViewStateMac на страницах-элемента в Web.config к ложным (просто чтобы увидеть, если это работает, я не являюсь фанатом дыр в безопасности)

Результат: нет Ошибка, но я остался на странице входа. и в журнале kentico-event было успешное сообщение auth. хмм ?! Итак, я вернул его в true, чтобы быть БЕЗОПАСНЫМ ;-) Другие решения Securityhole, такие как auth никогда и т. Д., Я даже не пытался, так как это должна быть страница сохранения.

4) я проверил, если страница действительно загружается укомплектовать (так как в некоторых Форума было отмечено, что если страница не укомплектовать загрузить это может нарушить ViewState и проверка не работал бы)

Результат: тот же Ошибка

5) Я попробовал «Небезопасное» временное решение Kentico, установив атрибут в Интернете.конфигурации/настроек раздела

<add key="CMSUseViewStateUserKey" value="false"/> 

Результат: То же самое, по номеру 3

6) я даже заглянул в «опережения загрузчика ошибка в IE8», но это должно быть исправлено с KB980182 и я установил (Да я хватался за соломинку сейчас)

JUST ВЫГЛЯДЕЛА

7) ViewState не кажется слишком долго, из-за того, что это всего лишь Войти Ф.О. гт

JUST ВЫГЛЯДЕЛА

8) Вызывается один сервер непосредственно без кластера IP-Адрес

Результат: Это работает. (YEY)

-> Вся эта информация несколько сбивает с толку для меня и как я могу заставить Кластер работать?

*) Chrome работает на 90 - 99% с Кластер/с на сервере в кластере/на сервере непосредственно

*) IE 8 не работает с Кластер

*) IE 8 Безразлично «т работает с кластером только с одним сервером

*) IE 8 работает непосредственно на сервере

Conlusion до сих пор:

*) Это может быть ошибка IE8

*) Это может быть что-то с балансировкой нагрузки, кластером или доменным именем (я думаю).

*) Я должен отказаться от Chrome/ошибка из-за того, что в настоящее время я не могу воспроизвести больше

*) в связи с пунктом 3 Это должно быть что-то с помощью функции MAC (http://support.microsoft.com/)

I был бы благодарен за любой ввод/указатель/...

Пс: пожалуйста, не беспокойтесь, это мой первый вопрос.

ответ

3

Я думаю, что нашел решение (я могу проверить его в понедельник, когда коллеги из Server-Team вернулись). Yey

В акте отчаяния я, проанализировал HTTP-трафик как IE и Chrome и обнаружил запрос набора-печенья никогда не устанавливаются. После вмешательства в http-трафик и сам вставляя куки. Страница загружена нормальной. -> причина была действительно интернет-исследователем.

Таким образом, после некоторых более Google-кий я узнал, что кажется, , что FQDN, который указал на loadbalancer имел недопустимый Charakter (нижнее подчеркивание), а IE8 отбрасывает печенье в случае недопустимого FQDN. (я нашел эту информацию here, говорится тот же вопрос для IE 9, но симптомы совпадают)

Забавно, что Firefox, Chrome, ..., кажется, принять «недействителен» FQDN

Так проблема решена. После теста в понедельник с помощью Server-Crew я опубликую/комментирую результат. (Просто, разделить все части решения и результаты)

** Обновление: * Проверено с ребятами, это проблема/решение

+0

После получения этой ошибки и нескольких поисков в Интернете этот пост, наконец, исправил нашу проблему. Мы удалили знак подчеркивания, и он снова начал работать. – Chris

1

Являются ли экземпляры Kentico установленными в Web farm synchronization, чтобы они знали друг о друге, и все вещи, включая кеш и viewstate, синхронизированы?

+0

В настоящее время они не являются. я попробую, но, тем не менее, я не думаю, что могу помочь, так как я тестировал webfarm только с помощью onserver в loadbalancer (так что все запросы, как правило, работают на сервере). Если это сработает, это меня удивило бы, но я был бы ОЧЕНЬ счастлив. :) –

+0

Thx для справки, похоже, был типичной ошибкой пользователя, не использующей правильную систему. –