Код события IIS 8.5 4009 Viewstate не удалось с использованием идентификатора пула приложений - PullRequest
0 голосов
/ 07 мая 2018

Мы пытаемся внедрить хорошую практику IIS 8.5 для веб-сайтов, используя уникальный пул приложений для каждого сайта, и запускать эти пулы приложений под идентификатором пула приложений. Мы запускаем пулы приложений под учетной записью домена. Мы смогли успешно перейти на использование идентификатора пула приложений с веб-сервисом. Но с веб-сайтом, который использует аутентификацию Windows, используя идентификацию пула приложений для пула приложений, сайт ошибается. В журнале событий приложений Windows связанной ошибкой является «Код события 4009 - сбой проверки состояния представления:: проверка целостности состояния представления». Сам сайт дает пользователю не авторизованное сообщение. Он использует метод WindowsPrincipal.IsInRole, чтобы определить, находится ли пользователь в группе AD. Я знаю, что пользователь Windows передается, потому что он отображается на странице asp.

В некоторых сообщениях об этой проблеме упоминается обновление ключа в machine.config. Это автономный сервер. Как только я снова переключаю тот же пул приложений для сайта на учетную запись домена, presto, он работает.

Windows Server 2012, .NET Framework 4.0, U

1 Ответ

0 голосов
/ 12 июня 2018

Основная проблема заключалась в использовании метода WindowsPrincipal.IsInRole и переменной System.Environment.,

WindowsPrincipal currentPrince = new WindowsPrincipal((WindowsIdentity)identity;
string domainName = System.Environment.Us variableerDomainName;

if currentPrince.IsInRole(domainName + "\\" + groupNane))System
   { 
        bool isAuthenticated = true; '
   }

При запуске под учетной записью домена переменная System.Environment содержала тот же домен, что и удостоверение.

При запуске под псевдо-учетной записью AppPoolIdentity переменная System.Environment содержала «IIS_AppPool».

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

...